Submission #1153152

#TimeUsernameProblemLanguageResultExecution timeMemory
1153152KK_1729Snowball (JOI21_ho_t2)C++17
100 / 100
65 ms11336 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define FOR(i,a,b) for (int i = (a); i < (b); ++i) #define pb push_back #define all(a) a.begin(), a.end() #define endl "\n" void printVector(vector<int> a){ for (auto x: a) cout << x << " "; cout << endl; } void solve(){ int n, q; cin >> n >> q; vector<int> o(n+1); FOR(i,1,n+1) cin >> o[i]; vector<int> a(q+1), b(q+1); int curr = 0; vector<int> u(q+1); FOR(i,1,q+1) cin >> u[i]; FOR(i,1,q+1){ curr += u[i]; a[i] = max(a[i-1], curr); b[i] = max(b[i-1], -curr); } vector<int> c(q+2); FOR(i,1,q+1) c[i] = a[i]+b[i]; c[q+1] = 1e18; vector<int> ans(n+1); // printVector(a); // printVector(b); FOR(i,1,n){ int d = o[i+1]-o[i]-1; int j = (upper_bound(all(c), d) - c.begin()); ans[i] += a[j-1]; ans[i+1] += b[j-1]; if (j == q+1) continue; if (b[j] != b[j-1]){ ans[i+1] += d-a[j-1]-b[j-1]+1; }else{ ans[i] += d-a[j-1]-b[j-1]+1; } } ans[1] += b[q]; ans[n] += a[q]; FOR(i,1,n+1) cout << ans[i] << endl; } int32_t main(){ ios::sync_with_stdio(false);cin.tie(nullptr); int t = 1; // cin >> t; while (t--) solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...