제출 #1186620

#제출 시각아이디문제언어결과실행 시간메모리
1186620user736482Snowball (JOI21_ho_t2)C++20
100 / 100
101 ms19256 KiB
#pragma GCC optimize("O3") #include <bits/stdc++.h> using namespace std; #define ll long long #define ld long double #define pb push_back #define ff first #define ss second #define MOD 1000000009 #define INF 1000000019 #define INFL 1000000000000000099LL ll a,b,c,d,t,n,m,ans[1000007],l,q; vector<ll>x,w={0}; set<pair<ll,pair<ll,ll>>>s; int main() { ios_base::sync_with_stdio(0);cin.tie(0); cin>>n>>q; for(ll i=0;i<n;i++){ cin>>a; x.pb(a); } for(ll i=0;i<q;i++){ cin>>a; w.pb(w.back()+a); } s.insert({INFL,{(n-1),0}}); for(ll i=1;i<n;i++){ s.insert({x[i]-x[i-1],{i-1,(i)}}); } a=0; b=0; for(ll i=0;i<q;i++){ a=min(a,w[i+1]); b=max(b,w[i+1]); while(s.size() && -a+b>=(*s.begin()).ff){ auto pom=(*s.begin()); if(w[i+1]>0){ ans[pom.ss.ss]-=a; ans[pom.ss.ff]+=pom.ff+a; } else{ ans[pom.ss.ff]+=b; ans[pom.ss.ss]+=(pom.ff-b); } s.erase(s.begin()); } } while(s.size()){ auto pom=*s.begin(); ans[pom.ss.ff]+=b; ans[pom.ss.ss]-=a; s.erase(s.begin()); } for(ll i=0;i<n;i++)cout<<ans[i]<<"\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...