Guest User

Untitled

a guest
Dec 12th, 2017
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.84 KB | None | 0 0
  1. /*Гоночная трас­са состоит из двух ос­нов­ных дорог и не­сколь­ких переездов, поз­во­ля­ю­щих перейти с одной до­ро­ги на другую. На всех участках, вклю­чая переезды, дви­же­ние разрешено толь­ко в одну сторону, по­это­му переезд воз­мо­жен только с до­ро­ги A на до­ро­гу B. Гон­щик стартует в точке A0 и дол­жен финишировать в точке BN. Он знает, за какое время смо­жет пройти каж­дый участок пути по каж­дой дороге, то есть время про­хож­де­ния участков A0A1, A1A2, …, AN-1AN, B0B1, B1B2, …, BN-1BN. Время про­хож­де­ния всех пе­ре­ез­дов A0B0, A1B1, …, ANBN оди­на­ко­во и из­вест­но гонщику. Не­об­хо­ди­мо определить, за какое ми­ни­маль­ное время гон­щик сможет прой­ти трассу.*/
  2.  
  3.  
  4. #include <iostream>
  5. using namespace std;
  6.  
  7. int main() {
  8. int n; // количество участков
  9. cin >> n;
  10.  
  11. int transferTime; // время переезда
  12. cin >> transferTime;
  13.  
  14. int x = 0; // x_i - минимально возможное время движения от A_0 до A_i+1
  15. int y = transferTime; // y_i - минимально возможное время движения от A_0 до B_i+1
  16. for (int i = 0; i < n; ++i) {
  17. int a, b;
  18. cin >> a >> b;
  19. x += a; // x_i = x_i-1 + a_i+1
  20. if (y + b < x + transferTime) { // y_i = min(y_i-1 + b_i+1, x_i + transferTime)
  21. y += b;
  22. } else {
  23. y = x + transferTime;
  24. }
  25. }
  26. cout << y;
  27.  
  28. return 0;
  29. }
Add Comment
Please, Sign In to add comment