Submission #1177163

#TimeUsernameProblemLanguageResultExecution timeMemory
1177163nguynSnowball (JOI21_ho_t2)C++20
100 / 100
75 ms11412 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define ll long long #define F first #define S second #define pb push_back #define pii pair<int,int> const int N = 2e5 + 5; int n, q; int x[N], w[N]; int d[N]; int plef[N], prig[N]; int res[N]; signed main(){ ios_base::sync_with_stdio(false) ; cin.tie(0) ; cout.tie(0) ; if (fopen("INP.INP" ,"r")) { freopen("INP.INP" ,"r" , stdin) ; freopen("OUT.OUT" , "w" , stdout) ; } cin >> n >> q; for (int i = 1; i <= n; i++) { cin >> x[i]; } for (int i = 1; i <= q; i++) { cin >> w[i]; d[i] = d[i - 1] + w[i]; prig[i] = prig[i - 1]; plef[i] = plef[i - 1]; if (d[i] > 0) prig[i] = max(prig[i], d[i]); if (d[i] < 0) plef[i] = max(plef[i], abs(d[i])); } res[1] += plef[q]; res[n] += prig[q]; for (int i = 1; i < n; i++) { int l = 1; int r = q; int ans = 0; while(l <= r) { int mid = (l + r) / 2; if (plef[mid] + prig[mid] >= x[i + 1] - x[i]) { r = mid - 1; ans = mid; } else { l = mid + 1; } } if (ans) { if (d[ans] > 0) { res[i + 1] += plef[ans]; res[i] += x[i + 1] - x[i] - plef[ans]; } else { res[i] += prig[ans]; res[i + 1] += x[i + 1] - x[i] - prig[ans]; } } else { res[i] += prig[q]; res[i + 1] += plef[q]; } } for (int i = 1; i <= n; i++) { cout << res[i] << '\n'; } }

Compilation message (stderr)

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