Submission #1291549

#TimeUsernameProblemLanguageResultExecution timeMemory
1291549tunademayoSnowball (JOI21_ho_t2)C++20
100 / 100
76 ms11532 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define FOR(i, a, b) for(int i = a ; i <= b ; i++) #define FORD(i, a, b) for(int i = a ; i >= b ; i--) #define REP(i, a, b) for(int i = a ; i < b ; i++) const bool Multitest = 0, Local = 0; const int N = 2e5 + 10; int n, q; ll a[N], b[N]; ll mad[N], mid[N]; ll l[N], r[N]; void cal(int p1, int p2) { if(a[p1] + mad[q] < a[p2] + mid[q]) { r[p1] = mad[q]; l[p2] = abs(mid[q]); return; } int low = 1, high = q, p = -1; while(low <= high) { int m = (low + high) >> 1; if(a[p1] + mad[m] >= a[p2] + mid[m]) high = m - 1, p = m; else low = m + 1; } if(b[p] < 0) // di qua trai { r[p1] = mad[p]; l[p2] = (a[p2] - a[p1]) - r[p1]; } else { l[p2] = abs(mid[p]); r[p1] = (a[p2] - a[p1]) - l[p2]; } } void work() { cin >> n >> q; for(int i = 1 ; i <= n ; i++) cin >> a[i]; sort(a + 1, a + 1 + n); a[0] = -1e18, a[n + 1] = 1e18; FOR(i, 1, q) { cin >> b[i]; } ll s = 0; FOR(i, 1, q) { s += b[i]; mid[i] = min(mid[i - 1], s); mad[i] = max(mad[i - 1], s); } FOR(i, 0, n) cal(i, i + 1); FOR(i, 1, n) cout << l[i] + r[i] << ' '; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int q = 1; if(Local && fopen("code.inp", "r")) { freopen("code.inp", "r", stdin); freopen("code.ans", "w", stdout); } if(Multitest) cin >> q; while(q--) work(); }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:90:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   90 |         freopen("code.inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:91:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   91 |         freopen("code.ans", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...