Submission #1265162

#TimeUsernameProblemLanguageResultExecution timeMemory
1265162happyboySnowball (JOI21_ho_t2)C++20
100 / 100
139 ms11288 KiB
#include <bits/stdc++.h> using namespace std; int main() { int n, q; cin >> n >> q; vector<long long> a(n); for (auto& i : a) cin >> i; vector<pair<long long, int>> v(n - 1); for (int i = 0; i + 1 < n; i++) { auto& [d, idx] = v[i]; d = a[i + 1] - a[i]; idx = i; } sort(v.begin(), v.end()); vector<long long> w(q); for (auto& i : w) cin >> i; int pt = 0; long long curr = 0, mn = 0, mx = 0; vector<long long> l(n, -1000000000000000000), r(n, -1000000000000000000); //for (auto [d, idx] : v) cout << d << " " << idx << "\n"; for (auto i : w) { curr += i; mx = max(mx, curr); mn = min(mn, curr); //cout << curr << ": "; while (pt + 1 < n && v[pt].first <= mx - mn) { int tmp = v[pt].second; r[tmp] = l[tmp + 1] = (curr > 0 ? a[tmp + 1] + mn : a[tmp] + mx); //cout << r[tmp] << " " << l[tmp + 1] << "\n"; pt++; } //cout << "\n"; } //cout << "\n"; for (int i = 0; i < n; i++) { if (l[i] == -1000000000000000000) l[i] = a[i] + mn; if (r[i] == -1000000000000000000) r[i] = a[i] + mx; //cout << l[i] << " " << r[i] << "\n"; cout << r[i] - l[i] << "\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...