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...