Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int n,m,q;
- long long a[100005],b[100005];
- long long sume[100005],sumo[100005],sum;
- vector<long long> v;
- long long gete(int x,int y)
- {
- if(!x)
- return sume[y];
- return sume[y]-sume[x-1];
- }
- long long geto(int x,int y)
- {
- if(!x)
- return sumo[y];
- return sumo[y]-sumo[x-1];
- }
- long long query()
- {
- int ind=lower_bound(v.begin(),v.end(),sum)-v.begin();
- if(ind==v.size())
- ind--;
- long long ans=llabs(v[ind]-sum);
- if(ind!=v.size()-1)
- ans=min(ans,llabs(v[ind+1]-sum));
- if(ind!=0)
- ans=min(ans,llabs(v[ind-1]-sum));
- return ans;
- }
- int main()
- {
- cin >> n >> m >> q;
- int i;
- for(i=0;i<n;i++)
- cin >> a[i];
- for(i=0;i<m;i++)
- cin >> b[i];
- for(i=0;i<m;i++)
- {
- if(i%2==0)
- sume[i]+=b[i];
- else
- sumo[i]+=b[i];
- if(i) {sume[i]+=sume[i-1]; sumo[i]+=sumo[i-1];}
- }
- for(i=0;i<n;i++)
- sum+=a[i]*(i%2==0?1:-1);
- for(i=0;i<=m-n;i++)
- {
- if(i%2==0)
- v.push_back(gete(i,i+n-1)-geto(i,i+n-1));
- else
- v.push_back(geto(i,i+n-1)-gete(i,i+n-1));
- }
- sort(v.begin(),v.end());
- cout << query() << endl;
- while(q--)
- {
- int l,r,x;
- cin >> l >> r >> x;
- if((r-l)%2==0)
- {
- if(l%2) sum+=x;
- else sum-=x;
- }
- cout << query() << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement