Advertisement
sparik

Untitled

Apr 26th, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.44 KB | None | 0 0
  1. #include<iostream>
  2. #include<stdio.h>
  3. #include<algorithm>
  4. #include<set>
  5. #include<map>
  6. #include<queue>
  7. #include<stack>
  8. #include<deque>
  9. #include<vector>
  10. #include<string>
  11. using namespace std;
  12.  
  13. #define INF 1000000000
  14. #define lint long long
  15. #define pb push_back
  16. #define mp make_pair
  17. #define MOD 1000000007
  18.  
  19. pair <int,pair<int,int> > a[100005];
  20. lint p[100005],mx[100005],d[100005];
  21. int n;
  22.  
  23. int check(lint g)
  24. {
  25.     int i,j=n,k;
  26.     lint gsum=0,esum,enc,enn;
  27.     for(i=n;i>0;--i)
  28.     {
  29.         gsum+=a[i].second.first;
  30.         while(1)
  31.         {
  32.             if(gsum-a[j].second.first<g)break;
  33.             gsum-=a[j].second.first;
  34.             --j;
  35.         }
  36.         if(gsum<g)continue;
  37.         enc=p[j]-p[i-1]+(a[i].first-a[i-1].first);
  38.         enn=mx[j]-p[j];
  39.         if(enn+enc>=0)return 1;
  40.     }
  41.     return 0;
  42. }
  43. int main()
  44. {
  45.     int i,j;
  46.     lint l=0,r=1;
  47.     scanf("%d",&n);
  48.     p[0]=0;
  49.     for(i=1;i<=n;++i)
  50.     {
  51.         scanf("%d %d %d",&a[i].first,&a[i].second.first,&a[i].second.second);
  52.         d[i]=d[i-1]+a[i].first;
  53.         p[i]=p[i-1]+a[i].second.second+a[i-1].first-a[i].first;
  54.         r+=a[i].second.first;
  55.     }
  56.     p[n+1]=INF*1ll*INF;
  57.     mx[n]=p[n];
  58.     for(i=n-1;i>0;--i)
  59.     {
  60.         mx[i]=max(p[i],mx[i+1]);
  61.     }
  62.     while(r-l>1)
  63.     {
  64.         lint mid=(r+l)/2;
  65.         if(check(mid))
  66.             l=mid;
  67.         else r=mid;
  68.     }
  69.     if(check(r))l=r;
  70.     printf("%lld",l);
  71.     return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement