Submission #534807

#TimeUsernameProblemLanguageResultExecution timeMemory
534807Cookie197Snowball (JOI21_ho_t2)C++17
33 / 100
2520 ms2372 KiB
#include<iostream> #include<algorithm> #include<vector> #include<set> using namespace std; #define ll long long #define pii pair<ll,ll> #define mp make_pair #define endl "\n" #define out(x) cout<< #x << " = " << x << endl #define outp(x) cout << #x << " first = " << x.first << " second = " << x.second << endl ll arr[200005], ans[200005]; pii snow[200005]; ll rem[200005]; int n,q; signed main(){ ios::sync_with_stdio(false); cin.tie(0); cin>>n>>q; n+=2; arr[1] = -3e18, arr[n] = 3e18; for (int i=2;i<n;i++) cin>>arr[i]; for (int i=1;i<n;i++) { snow[i] = mp(0,0), rem[i] = arr[i+1]-arr[i]; } //out(rem[4]); //outp(snow[4]); while(q--){ ll x; cin>>x; if (x>0){ for (int i=1;i<n;i++) if (rem[i] > 0){ snow[i].first -= x; if (snow[i].first < 0){ ans[i] += min(rem[i],-snow[i].first); snow[i].first = 0; } snow[i].second += x; if (snow[i].second > arr[i+1]-arr[i]){ snow[i].second = arr[i+1]-arr[i]; } rem[i] = arr[i+1]-arr[i]-snow[i].first-snow[i].second; } }else{ x = abs(x); for (int i=1;i<n;i++) if (rem[i] > 0){ snow[i].second -= x; if (snow[i].second < 0){ ans[i+1] += min(rem[i], -snow[i].second); snow[i].second = 0; } snow[i].first += x; if (snow[i].first > arr[i+1]-arr[i]){ snow[i].first = arr[i+1]-arr[i]; } rem[i] = arr[i+1]-arr[i]-snow[i].first-snow[i].second; } } //for (int i=1;i<=n;i++) cout<<ans[i]<<" "; //cout<<endl; //out(rem[4]); //outp(snow[4]); } for (int i=2;i<n;i++) cout<<ans[i]<<endl; //cout<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...