제출 #1265110

#제출 시각아이디문제언어결과실행 시간메모리
1265110kustov_vadim_533Snowball (JOI21_ho_t2)C++20
100 / 100
62 ms9812 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; typedef unsigned long long ull; #define len(v) (int)((v).size()) const ll inf = 1e18; inline void solve(){ int n, q; cin >> n >> q; vector<ll> a(n), b(q); for (int i = 0; i < n; ++i){ cin >> a[i]; } for (int i = 0; i < q; ++i){ cin >> b[i]; } vector<ll> lf(q + 1, 0), rt(q + 1, 0); ll d = 0; for (int i = 0; i < q; ++i){ d += b[i]; lf[i + 1] = max(lf[i], -d); rt[i + 1] = max(rt[i], d); } vector<ll> ans(n, 0); for (int i = -1; i < n; ++i){ ll d = inf; if (i >= 0 && i + 1 < n){ d = a[i + 1] - a[i]; } int li = 0, ri = q; while (ri - li > 1){ int mi = (li + ri) / 2; if (lf[mi] + rt[mi] > d){ ri = mi; } else{ li = mi; } } ll x = min(lf[ri], d - rt[li]); ll y = min(rt[ri], d - lf[li]); if (i >= 0) ans[i] += y; if (i + 1 < n) ans[i + 1] += x; } for (int i = 0; i < n; ++i){ cout << ans[i] << '\n'; } } signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); cout.precision(60); int t = 1; // cin >> t; while (t--) { solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...