Submission #940563

#TimeUsernameProblemLanguageResultExecution timeMemory
940563HanksburgerSnowball (JOI21_ho_t2)C++17
100 / 100
95 ms17188 KiB
#include <bits/stdc++.h> using namespace std; vector<pair<long long, pair<long long, long long> > > v; pair<long long, long long> p[200005]; long long a[200005]; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); long long n, m, x, sum=0, mx0=0, mx1=0; cin >> n >> m; a[0]=-1e18, a[n+1]=1e18; for (long long i=1; i<=n; i++) cin >> a[i]; v.push_back({0, {0, 0}}); for (long long i=1; i<=m; i++) { cin >> x; sum+=x; mx0=max(mx0, sum); mx1=max(mx1, -sum); v.push_back({mx0+mx1, {mx0, mx1}}); } for (long long i=0; i<=n; i++) { long long ind=lower_bound(v.begin(), v.end(), make_pair(a[i+1]-a[i]+1, make_pair(0LL, 0LL)))-v.begin(); if (ind==m+1) p[i]=v[ind-1].second; else if (v[ind-1].second.first==v[ind].second.first) p[i]={v[ind].second.first, a[i+1]-a[i]-v[ind].second.first}; else p[i]={a[i+1]-a[i]-v[ind].second.second, v[ind].second.second}; if (i) cout << p[i-1].second+p[i].first << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...