aboutsummaryrefslogtreecommitdiff
path: root/week02/exercise11.cpp
blob: 7d1de63b398f4a97c80322bb9e76d34eafeb4f32 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>

int main() {
	// Много не съм ползвал константи в решенията, не защото няма смисъл да се прави, а така някои неща по-лесно се виждат
	const int LIGHT_SPEED = 29;

	int timeSent, firstSatelliteCoord, firstSatelliteTimeRecv, secondSatelliteCoord, secondSatelliteTimeRecv;
	std::cin >> timeSent >> firstSatelliteCoord >> firstSatelliteTimeRecv >> secondSatelliteCoord >> secondSatelliteTimeRecv;

	int distanceToFirst =  (firstSatelliteTimeRecv  - timeSent) / 2 * LIGHT_SPEED;
	int distanceToSecond = (secondSatelliteTimeRecv - timeSent) / 2 * LIGHT_SPEED;

	// Повтарям логиката тука: имаме 4 възможни точни, първия сателит +- дистаниця и втория сателит +- дистанция
	// Понеже данните не лъжат, трябва две от тези 4 възможности да съвпадат, и това проверяваме
	// Допускаме че входа е валиден, така че това работи
	if (firstSatelliteCoord + distanceToFirst == secondSatelliteCoord + distanceToSecond ||
		firstSatelliteCoord + distanceToFirst == secondSatelliteCoord - distanceToSecond)
		std::cout << (firstSatelliteCoord + distanceToFirst) << std::endl;
	else
		std::cout << (firstSatelliteCoord - distanceToSecond) << std::endl;
}