Submission #838905

#TimeUsernameProblemLanguageResultExecution timeMemory
838905LeVanThucSnowball (JOI21_ho_t2)C++17
100 / 100
71 ms13880 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define fi first #define se second #define p(x,y) pair<ll,ll>(x,y) #define BIT(i,x) ((x>>i)&1) #define MASK(x) (1<<x) #define ld long double #define __builtin_popcount __builtin_popcountll #define pll pair<ll,ll> template<class T1,class T2> bool maximize(T1 &x,const T2 &y) { if(x<y) { x=y; return 1; } return 0; } template<class T1,class T2> bool minimize(T1 &x,const T2 &y) { if(x>y) { x=y; return 1; } return 0; } void online() { std::ios_base::sync_with_stdio(0); cin.tie(0); #ifdef thuc freopen("input.INP","r",stdin); freopen("output.OUT","w",stdout); #endif } const ll N=2e5+10,M=998244353; ll a[N],n,ans[N]; int main() { online(); vector<pll> vt; ll q; cin>>n>>q; for(int i=1;i<=n;i++) { cin>>a[i]; if(i>1) vt.emplace_back(a[i]-a[i-1],i); } vt.emplace_back(1e18,1); vt.emplace_back(1e18,n+1); sort(vt.begin(),vt.end(),greater<pll>()); // for(auto [x,y]:vt) cout<<x<<' '<<y<<'\n'; ll mx=0,mn=0,cr=0; while(q--) { ll x; cin>>x; cr+=x; if(minimize(mn,cr)) { while(vt.back().fi<=(mx-mn)) { ll k=vt.back().se; ans[k-1]+=mx; ll z=vt.back().fi-mx; ans[k]+=z; vt.pop_back(); } } if(maximize(mx,cr)) { while(vt.back().fi<=(mx-mn)) { ll k=vt.back().se; ans[k]-=mn; ll z=vt.back().fi+mn; ans[k-1]+=z; vt.pop_back(); } } } while(vt.size()) { ll k=vt.back().se; ans[k]-=mn; ans[k-1]+=mx; vt.pop_back(); } for(int i=1;i<=n;i++) { cout<<ans[i]<<'\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...