Advertisement
tepyotin2

Rest Stop

Jun 20th, 2025
281
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.76 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. typedef long long ll;
  6.  
  7. int l, n, f, b;
  8. ll rest[1000001];
  9. int mx[1000001];
  10. ll ans;
  11.  
  12. int main(){
  13.     freopen("reststops.in", "r", stdin);
  14.     freopen("reststops.out", "w", stdout);
  15.    
  16.     cin >> l >> n >> f >> b;
  17.     int cover = f-b;
  18.     for(int i=0; i<n; i++){
  19.         ll p, t;
  20.         cin >> p >> t;
  21.         rest[p] = t;
  22.     }
  23.     mx[l] = l;
  24.     for(int i=l-1; i>=1; i--){
  25.         if(rest[mx[i+1]]<rest[i]){
  26.             mx[i] = i;
  27.         }else{
  28.             mx[i] = mx[i+1];
  29.         }
  30.     }
  31.     //for(int i=1; i<=l; i++){
  32.         //cout << i << ", " << mx[i] << ", " << rest[mx[i]] << '\n';
  33.     //}
  34.     int pos = mx[1];
  35.     int prev = 0;
  36.     while(pos<=l){
  37.         ans+=(cover*rest[pos]*(pos-prev));
  38.         if(pos>=l) break;
  39.         prev = pos;
  40.         pos = mx[pos+1];
  41.     }
  42.     cout << ans << '\n';
  43.    
  44.     return 0;
  45. }
  46.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement