# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
228481 | 2020-05-01T07:37:26 Z | bharat2002 | Rice Hub (IOI11_ricehub) | C++14 | 0 ms | 0 KB |
/*input */ #include<bits/stdc++.h> #include "ricehub.h" using namespace std; const int N=1e5+100; const int mod=1e9 + 7; #define pii pair<int, int> #define f first #define s second #define mp make_pair #define FOR(i, n) for(int i=1;i<=n;i++) #define TRACE(x) cerr << #x << " = " << x << endl //Trace prints the name of the variable and the value. int besthub(int n, int L, int arr[], int tot) { int l=1, r=1; vector<pii> vals;int rem=tot;int ans=1; for(int i=1;i<=n;i++) { while(l<i&&r<n&&arr[i]-arr[l]>arr[r+1]-arr[i]) { rem+=arr[i]-arr[l];rem-=arr[r+1]-arr[i];r++;l++; } while(l>1&&r<n) { int cost=min(arr[i]-arr[l-1], arr[r+1]-arr[i]); if(cost>rem) break; if(arr[i]-arr[l-1]< arr[r+1]-arr[i]) { l--; } else r++; rem-=cost; } vals.push_back(mp(l, r));ans=max(ans, r-l+1); } if(vals.size()>1) { for(int i=1;i<vals.size();i++) { if(vals[i].s==n) break; assert(vals[i].f>=vals[i-1].f); } } return ans; } /*signed main() { ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); int n, b;cin>>n>>b;int arr[N]; for(int i=1;i<=n;i++) { cin>>arr[i]; } cout<<besthub(n, 0, arr, b); }*/