Submission #964393

#TimeUsernameProblemLanguageResultExecution timeMemory
964393maxFedorchukSnowball (JOI21_ho_t2)C++17
100 / 100
82 ms18836 KiB
#include <bits/stdc++.h> using namespace std; const long long MX=2e5+10; long long x[MX],w[MX],ans[MX]; int main() { cin.tie(0); ios_base::sync_with_stdio(0); long long n,m; cin>>n>>m; for(long long i=1;i<=n;i++) { cin>>x[i]; } for(long long i=1;i<=m;i++) { cin>>w[i]; w[i]+=w[i-1]; } vector < long long > imt; vector < long long > sum; vector < long long > mnz; vector < long long > mxz; imt.push_back(0); mnz.push_back(0); mxz.push_back(0); long long mn=0,mx=0; for(long long i=1;i<=m;i++) { if(w[i]<mn) { imt.push_back(w[i]); mnz.push_back(w[i]); mxz.push_back(mxz.back()); mn=w[i]; } if(w[i]>mx) { imt.push_back(w[i]); mnz.push_back(mnz.back()); mxz.push_back(w[i]); mx=w[i]; } } m=imt.size()-1; for(long long i=0;i<=m;i++) { sum.push_back(llabs(mxz[i])+llabs(mnz[i])); } for(long long i=2;i<=n;i++) { long long l=0,r=m+1; while(l+1<r) { long long mid=(l+r)/2; if(sum[mid]<=(x[i]-x[i-1])) { l=mid; } else { r=mid; } } ans[i-1]+=llabs(mxz[l]); ans[i]+=llabs(mnz[l]); if(r==m+1) { continue; } if(imt[r]<0) { ans[i]+=(x[i]-x[i-1])-sum[l]; } else { ans[i-1]+=(x[i]-x[i-1])-sum[l]; } } ans[1]+=llabs(mnz[m]); ans[n]+=llabs(mxz[m]); for(int i=1;i<=n;i++) { cout<<ans[i]<<"\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...