제출 #534820

#제출 시각아이디문제언어결과실행 시간메모리
534820Paul_Liao_1457Snowball (JOI21_ho_t2)C++14
33 / 100
2524 ms2688 KiB
// 還要更強 #include<iostream> #include<queue> #include<set> #include<map> #include<iomanip> #include<math.h> #include<cstring> #include<stack> #include<string.h> #include<random> #include<algorithm> #include<vector> #define ll long long #define FOR(i,a,b) for(int i=a;i<b;i++) #define REP(i,a,b) for(int i=a;i>=b;i--) #define INF (ll)(3e18) #define pb push_back #define AC ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); using namespace std; int n,q; vector<ll> v,Q; ll ans[200005]; signed main(){ AC; cin>>n>>q; v.pb(-INF); FOR(i,0,n){ ll x; cin>>x; v.pb(x); } v.pb(INF); FOR(i,0,q){ ll y; cin>>y; Q.pb(y); } FOR(i,1,n+1){ ll now=0,maxn=0,minn=v[i]; //cout<<"i="<<i<<endl; FOR(j,0,q){ now+=Q[j]; maxn=max(maxn,now); if(now<0){ minn=min(minn,max(v[i-1]+maxn,v[i]+now)); } } //cout<<"minn="<<minn<<endl; ans[i]+=v[i]-minn; maxn=v[i]; now=0; minn=0; FOR(j,0,q){ now+=Q[j]; minn=min(minn,now); //cout<<"now="<<now<<" minn="<<minn<<endl; if(now>0){ maxn=max(maxn,min(v[i+1]+minn,v[i]+now)); } } //cout<<"maxn="<<maxn<<endl; ans[i]+=maxn-v[i]; } FOR(i,1,n+1) cout<<ans[i]<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...