# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1266291 | wedonttalkanymore | Snowball (JOI21_ho_t2) | C++20 | 66 ms | 11336 KiB |
#include <bits/stdc++.h>
/*
Strat code:
- Thinking about how to solve the full problems: 15 min
- Thinking about subtasks + code: 30 min
- Stress: 10 - 15 min
=> Total need 2h15m
*/
using namespace std;
using ll = long long;
#define int long long
#define pii pair<ll, ll>
#define fi first
#define se second
const ll N = 2e5 + 5, inf = 1e18, mod = 1e9 + 7, block = 320, lim = 16;
int n, q;
int a[N];
int w[N];
int pos[N];
int pmin[N], pmax[N];
int ans[N];
signed main() {
ios::sync_with_stdio(false);
cin.tie(0);
if (fopen(".inp", "r")) {
freopen(".inp", "r", stdin);
freopen(".out", "w", stdout);
}
cin >> n >> q;
for (int i = 1; i <= n; i++) cin >> a[i];
for (int i = 1; i <= q; i++) cin >> w[i];
for (int i = 1; i <= q; i++) pos[i] = pos[i - 1] + w[i];
// for (int i = 1; i <= q; i++) cout << pos[i] << ' ';
// cout << '\n';
for (int i = 1; i <= q; i++) {
pmin[i] = min(pmin[i - 1], pos[i]); // ben trai
pmax[i] = max(pmax[i - 1], pos[i]); // ben phai
// cout << pmin[i] << ' ' << pmax[i] << '\n';
}
// if (n == 1) {
// cout << pmax[q] - pmin[q];
// return 0;
// }
ans[1] += abs(pmin[q]);
ans[n] += pmax[q];
// cout << ans[1] << ' ' << ans[n] << '\n';
for (int i = 1; i < n; i++) {
int dist = a[i + 1] - a[i];
// cout << i << ' ' << dist << '\n';
if (pmax[q] + abs(pmin[q]) <= dist) {
ans[i] += pmax[q];
ans[i + 1] += abs(pmin[q]);
}
else {
int l = 1, r = q, res = 0;
while(l <= r) {
int mid = (l + r) / 2;
if (pmax[mid] + abs(pmin[mid]) > dist) {
res = mid;
r = mid - 1;
}
else l = mid + 1;
}
// cout << res << '\n';
if (pmax[res - 1] == pmax[res]) {
ans[i] += pmax[res];
ans[i + 1] += dist - pmax[res];
}
else {
ans[i + 1] += abs(pmin[res]);
ans[i] += dist - abs(pmin[res]);
}
}
}
for (int i = 1; i <= n; i++) cout << ans[i] << '\n';
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |