Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Гоночная трасса состоит из двух основных дорог и нескольких переездов, позволяющих перейти с одной дороги на другую. На всех участках, включая переезды, движение разрешено только в одну сторону, поэтому переезд возможен только с дороги A на дорогу B. Гонщик стартует в точке A0 и должен финишировать в точке BN. Он знает, за какое время сможет пройти каждый участок пути по каждой дороге, то есть время прохождения участков A0A1, A1A2, …, AN-1AN, B0B1, B1B2, …, BN-1BN. Время прохождения всех переездов A0B0, A1B1, …, ANBN одинаково и известно гонщику. Необходимо определить, за какое минимальное время гонщик сможет пройти трассу.*/
- #include <iostream>
- using namespace std;
- int main() {
- int n; // количество участков
- cin >> n;
- int transferTime; // время переезда
- cin >> transferTime;
- int x = 0; // x_i - минимально возможное время движения от A_0 до A_i+1
- int y = transferTime; // y_i - минимально возможное время движения от A_0 до B_i+1
- for (int i = 0; i < n; ++i) {
- int a, b;
- cin >> a >> b;
- x += a; // x_i = x_i-1 + a_i+1
- if (y + b < x + transferTime) { // y_i = min(y_i-1 + b_i+1, x_i + transferTime)
- y += b;
- } else {
- y = x + transferTime;
- }
- }
- cout << y;
- return 0;
- }
Add Comment
Please, Sign In to add comment