Submission #493787

#TimeUsernameProblemLanguageResultExecution timeMemory
493787nathanlee726Snowball (JOI21_ho_t2)C++14
100 / 100
345 ms18620 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define int ll #define pii pair<int,int> #define X first #define Y second #define F(n) Fi(i,n) #define Fi(i,n) Fl(i,0,n) #define Fl(i,l,n) for(int i=l;i<n;i++) #define all(x) x.begin(),x.end() #define sz(x) ((int)x.size()) #define abs(x) ((x)>0?(x):-(x)) #define pb push_back pii rg[200010]; int a[200010],b[200010],mr[200010],ml[200010],n,q; vector<int> v; signed main(){ ios_base::sync_with_stdio(0);cin.tie(0); cin>>n>>q; F(n)cin>>a[i]; F(q)cin>>b[i]; mr[0]=0,ml[0]=0; int no=0; F(q){ no+=b[i]; mr[i+1]=max(mr[i],no); ml[i+1]=max(ml[i],-no); } F(q+1){ v.pb(ml[i]+mr[i]); } rg[0].X=ml[q]; rg[n-1].Y=mr[q]; F(n-1){ if(v[q]<=a[i+1]-a[i]){ rg[i].Y=mr[q]; rg[i+1].X=ml[q]; continue; } int d=upper_bound(all(v),a[i+1]-a[i])-v.begin()-1; if(b[d]>0){ rg[i].Y=a[i+1]-a[i]-ml[d+1]; rg[i+1].X=ml[d+1]; } else{ rg[i].Y=mr[d+1]; rg[i+1].X=a[i+1]-a[i]-mr[d+1]; } } //F(n)cout<<rg[i].X<<" "<<rg[i].Y<<endl; F(n){ cout<<rg[i].X+rg[i].Y<<endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...