Submission #1185923

#TimeUsernameProblemLanguageResultExecution timeMemory
1185923zyntherixSnowball (JOI21_ho_t2)C++20
100 / 100
75 ms9800 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define pi pair<int, int> #define vi vector<int> #define vs vector<string> #define vb vector<bool> #define vpi vector<pi> #define pb push_back #define all(a) (a).begin(), (a).end() const int INF = 1e17 + 7; signed main() { ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); int n, m; cin >> n >> m; vi v(n), q(m); int mxq[m + 1]; int mnq[m + 1]; mxq[0] = 0; mnq[0] = 0; int curr = 0; for (int i = 0; i < n; i++) { cin >> v[i]; } for (int i = 0; i < m; i++) { cin >> q[i]; curr += q[i]; mxq[i + 1] = max(mxq[i], curr); mnq[i + 1] = min(mnq[i], curr); } vi ans(n, 0); for (int i = 0; i < n - 1; i++) { if (mxq[m] + abs(mnq[m]) < v[i + 1] - v[i]) { ans[i] += mxq[m]; ans[i + 1] += abs(mnq[m]); continue; } int l = 0; int r = m + 1; while (l + 1 < r) { int m2 = (l + r) / 2; if (mxq[m2] + abs(mnq[m2]) >= v[i + 1] - v[i]) { r = m2; } else { l = m2; } } ans[i] += mxq[r]; ans[i + 1] += abs(mnq[r]); if (r != 0 && q[r - 1] > 0) { ans[i] += (v[i + 1] - v[i]) - (mxq[r] + abs(mnq[r])); } if (r != 0 && q[r - 1] < 0) { ans[i + 1] += (v[i + 1] - v[i]) - (mxq[r] + abs(mnq[r])); } } ans[0] += abs(mnq[m]); ans[n - 1] += mxq[m]; for (auto x : ans) cout << x << ' '; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...