Submission #60908410


Source Code Expand

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=2e5+5;
const ll inf=1e18;
int n,k;
ll a[N],pre[N];
vector<vector<vector<ll>>>solve(int l,int r){
    int sum=(r-l)/k+1;
    vector<vector<vector<ll>>>f(k,vector<vector<ll>>(k,vector<ll>(sum+1,-inf)));
    if(l==r){
        for(int i=0;i<k;i++){
            for(int j=0;j<k;j++){
                f[i][j][0]=0;
                if(k==1){
                    f[i][j][1]=a[l];
                }
            }
        }
        return f;
    }
    int mid=(l+r)/2;
    vector<vector<vector<ll>>>fl=solve(l,mid),fr=solve(mid+1,r);
    int suml=(mid-l)/k+1,sumr=(r-mid-1)/k+1;
    for(int i=0;i<k;i++){
        for(int j=0;j<k;j++){
            int p=0,q=0;
            while(p<=suml&&q<=sumr){
                f[i][j][p+q]=max(f[i][j][p+q],fl[i][0][p]+fr[0][j][q]);
                if(p==suml&&q==sumr){
                    break;
                }
                if(q==sumr||(p!=suml&&fl[i][0][p+1]-fl[i][0][p]>=fr[0][j][q+1]-fr[0][j][q])){
                    ++p;
                }else{
                    ++q;
                }
            }
            for(int x=1;x<k;x++){
                if(i+x>mid-l+1){
                    continue;
                }
                if(j+k-x>r-mid){
                    continue;
                }
                int p=0,q=0;
                while(p<=suml&&q<=sumr){
                    if(p+q+1<=sum){
                        f[i][j][p+q+1]=max(f[i][j][p+q+1],fl[i][x][p]+fr[k-x][j][q]+(pre[mid+k-x]-pre[mid-x]));
                    }
                    if(p==suml&&q==sumr){
                        break;
                    }
                    if(q==sumr||(p!=suml&&fl[i][x][p+1]-fl[i][x][p]>=fr[k-x][j][q+1]-fr[k-x][j][q])){
                        ++p;
                    }else{
                        ++q;
                    }
                }
            }
        }
    }
    return f;
}
ll ans[N];
int main(){
    scanf("%d%d",&n,&k);
    for(int i=1;i<=n;i++){
        scanf("%lld",&a[i]);
    }
    for(int i=1;i<=n;i++){
        pre[i]=pre[i-1]+a[i];
    }
    vector<vector<vector<ll>>>f=solve(1,n);
    memset(ans,-0x3f,sizeof ans);
    for(int i=0;i<k;i++){
        for(int j=0;j<k;j++){
            for(int p=1;p<=n/k;p++){
                ans[p]=max(ans[p],f[i][j][p]);
            }
        }
    }
    for(int i=1;i<=n/k;i++){
        printf("%lld ",ans[i]);
    }
    printf("\n");
    return 0;
}

Submission Info

Submission Time
Task G - Bar Cover
User AutumnMoon
Language C++ 17 (gcc 12.2)
Score 625
Code Size 2531 Byte
Status AC
Exec Time 722 ms
Memory 31632 KiB

Compile Error

Main.cpp: In function ‘int main()’:
Main.cpp:67:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   67 |     scanf("%d%d",&n,&k);
      |     ~~~~~^~~~~~~~~~~~~~
Main.cpp:69:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   69 |         scanf("%lld",&a[i]);
      |         ~~~~~^~~~~~~~~~~~~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 625 / 625
Status
AC × 2
AC × 36
Set Name Test Cases
Sample 00_sample_01.txt, 00_sample_02.txt
All 00_sample_01.txt, 00_sample_02.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt, 01_test_21.txt, 01_test_22.txt, 01_test_23.txt, 01_test_24.txt, 01_test_25.txt, 01_test_26.txt, 01_test_27.txt, 01_test_28.txt, 01_test_29.txt, 01_test_30.txt, 01_test_31.txt, 01_test_32.txt, 01_test_33.txt, 01_test_34.txt
Case Name Status Exec Time Memory
00_sample_01.txt AC 6 ms 5216 KiB
00_sample_02.txt AC 2 ms 5272 KiB
01_test_01.txt AC 189 ms 15940 KiB
01_test_02.txt AC 322 ms 20616 KiB
01_test_03.txt AC 493 ms 26764 KiB
01_test_04.txt AC 722 ms 31632 KiB
01_test_05.txt AC 189 ms 16000 KiB
01_test_06.txt AC 321 ms 20604 KiB
01_test_07.txt AC 498 ms 26748 KiB
01_test_08.txt AC 719 ms 31592 KiB
01_test_09.txt AC 189 ms 15960 KiB
01_test_10.txt AC 320 ms 20616 KiB
01_test_11.txt AC 489 ms 26788 KiB
01_test_12.txt AC 720 ms 31588 KiB
01_test_13.txt AC 189 ms 15940 KiB
01_test_14.txt AC 322 ms 20644 KiB
01_test_15.txt AC 492 ms 26756 KiB
01_test_16.txt AC 83 ms 13656 KiB
01_test_17.txt AC 161 ms 15992 KiB
01_test_18.txt AC 286 ms 20612 KiB
01_test_19.txt AC 453 ms 26768 KiB
01_test_20.txt AC 674 ms 31572 KiB
01_test_21.txt AC 83 ms 13836 KiB
01_test_22.txt AC 160 ms 15988 KiB
01_test_23.txt AC 286 ms 20612 KiB
01_test_24.txt AC 457 ms 26760 KiB
01_test_25.txt AC 678 ms 31564 KiB
01_test_26.txt AC 194 ms 13760 KiB
01_test_27.txt AC 456 ms 22124 KiB
01_test_28.txt AC 77 ms 8428 KiB
01_test_29.txt AC 188 ms 13644 KiB
01_test_30.txt AC 360 ms 18620 KiB
01_test_31.txt AC 2 ms 5380 KiB
01_test_32.txt AC 1 ms 5376 KiB
01_test_33.txt AC 2 ms 5220 KiB
01_test_34.txt AC 2 ms 5268 KiB