Submission #1152323

#TimeUsernameProblemLanguageResultExecution timeMemory
1152323TheInvadrSnowball (JOI21_ho_t2)C++20
0 / 100
40 ms63044 KiB
#include<bits/stdc++.h> using namespace std; #define int long long signed main() { int n,k; cin>>n>>k; int arr[n+1]; int left[n+1][k+1],right[n+1][k+1]; left[1][0]=right[1][0]=0; for(int i = 0;i<n;i++)cin>>arr[i+1]; int sn[k+1]; for(int i = 1;i<=k;i++)cin>>sn[i]; for(int i = 1;i<=n;i++){ int curr = 0; left[i][0]=right[i][0]=curr; for(int j = 1;j<=k;j++){ curr+=sn[j]; right[i][j]=max(right[i][j-1],curr); left[i][j]=min(left[i][j-1],curr); } for(int j = 1;j<=k;j++)left[i][j]=abs(left[i][j]); } int res[n+1]; for(int i = 1;i<=n;i++){ res[i]=0; if(i==n){ res[i]+=right[i][k]; } if(i==1){ res[i]+=left[i][k]; continue; } int d=0; for(int j = 1;j<=k;j++){ if(arr[i-1]+right[i-1][j]>=arr[i]-left[i][j]){ d=arr[i]-left[i][j-1]; if(sn[j]<0){ d=arr[i-1]+right[i][j-1]; } break; } } res[i-1]+=d-arr[i-1]; res[i]+=arr[i]-d; } for(int i = 1;i<=n;i++)cout<<res[i]<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...