Submission #1152830

#TimeUsernameProblemLanguageResultExecution timeMemory
1152830khangrlSnowball (JOI21_ho_t2)C++17
100 / 100
179 ms19196 KiB
#include<bits/stdc++.h> #define ff first #define ss second #define pb push_back #define int long long using namespace std; int n, q, last=0; vector <pair <int, int> > dist; signed main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>q; int x[200005]; for(int i=0; i<n; i++){ cin>>x[i]; if(i==0){ continue ; } dist.pb({x[i]-x[i-1], i-1}); } sort(dist.begin(), dist.end()); map<int,int>ans; int mn=0, mx=0, sum=0, j=0; while(q--){ int a; cin>>a; if(a==0){ continue ; } sum+=a; int mn1=min(mn, sum), mx1=max(mx, sum); if(j<n-1){ while(dist[j].ff<=mx1-mn1 and j<n-1){ ans[dist[j].ss]+=mx; ans[dist[j].ss+1]+=abs(mn); int diff=dist[j].ff-(mx-mn); if(mn1==mn){ ans[dist[j].ss]+=diff; } else{ ans[dist[j].ss+1]+=diff; } j++; if(j==n-1)break; } } mn=min(mn, sum); mx=max(mx, sum); } while(j<n-1){ ans[dist[j].ss]+=mx; ans[dist[j].ss+1]+=abs(mn); j++; } ans[0]+=abs(mn); ans[n-1]+=mx; for(int i=0; i<n; i++){ cout<<ans[i]<<"\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...