Submission #1221949

#TimeUsernameProblemLanguageResultExecution timeMemory
1221949TadijaSebezSnowball (JOI21_ho_t2)C++20
100 / 100
82 ms8364 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back const int N=200050; ll x[N],ans[N]; int main(){ int n,q; scanf("%i %i",&n,&q); for(int i=1;i<=n;i++)scanf("%lld",&x[i]); vector<pair<ll,ll>> pts; ll L=0,R=0,bal=0; pts.pb({0,0}); for(int i=1;i<=q;i++){ ll w; scanf("%lld",&w); bal+=w; if(bal>0)R=max(R,bal); else L=max(L,-bal); pts.pb({L,R}); } ans[1]+=L; ans[n]+=R; for(int i=1;i<n;i++){ ll dist=x[i+1]-x[i]; int bot=1,top=(int)pts.size()-1,idx=-1; while(top>=bot){ int mid=top+bot>>1; if(pts[mid].first+pts[mid].second>=dist){ idx=mid; top=mid-1; }else{ bot=mid+1; } } if(idx==-1){ ans[i]+=R; ans[i+1]+=L; }else{ ans[i]+=pts[idx-1].second; ans[i+1]+=pts[idx-1].first; ll diff=dist-pts[idx-1].first-pts[idx-1].second; if(pts[idx-1].first==pts[idx].first)ans[i]+=diff; else ans[i+1]+=diff; } } for(int i=1;i<=n;i++)printf("%lld\n",ans[i]); return 0; }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:10:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   10 |     scanf("%i %i",&n,&q);
      |     ~~~~~^~~~~~~~~~~~~~~
Main.cpp:11:31: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   11 |     for(int i=1;i<=n;i++)scanf("%lld",&x[i]);
      |                          ~~~~~^~~~~~~~~~~~~~
Main.cpp:17:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   17 |         scanf("%lld",&w);
      |         ~~~~~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...