제출 #506131

#제출 시각아이디문제언어결과실행 시간메모리
506131DanerZeinSnowball (JOI21_ho_t2)C++14
33 / 100
2577 ms2308 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; const ll MAX=1e18; int main(){ int n,q; cin>>n>>q; vector<ll> x; for(int i=0;i<n;i++){ ll a; cin>>a; x.push_back(a); } vector<ll> nie; nie.push_back(MAX); for(int i=0;i<n-1;i++){ nie.push_back(x[i+1]-x[i]); } nie.push_back(MAX); vector<ll> nl,nr,he; for(int i=0;i<n;i++){ nl.push_back(x[i]); nr.push_back(x[i]); he.push_back(0); } while(q--){ ll a; cin>>a; bool sw=0; if(a>0) sw=1; if(a==0) continue; for(int i=0;i<n;i++){ int id=i+sw; x[i]+=a; if(nie[id]==0) continue; if(sw){ // cout<<i<<": "<<x[i]<<" "<<nr[i]<<endl; if(x[i]>nr[i]){ ll aux=min(x[i]-nr[i],nie[id]); nr[i]=x[i]; he[i]+=aux; nie[id]-=aux; if(i==n-1) nie[id]=MAX; } } else{ if(x[i]<nl[i]){ ll aux=min(nl[i]-x[i],nie[id]); nl[i]=x[i]; he[i]+=aux; nie[id]-=aux; if(i==0) nie[id]=MAX; } } } } for(int i=0;i<n;i++) cout<<he[i]<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...