2 solutions

  • 0
    @ 2026-3-2 17:29:13
    
    #include<bits/stdc++.h>
    using namespace std;
    const int N=1010,M=40,L=3;
    int f[N][M][L],s[N];
    int main()
    {
        int T,W;
        cin>>T>>W;
        for(int i=1;i<=T;i++)
        {
            cin>>s[i];
        }
        memset(f,-0x3f,sizeof f);
        f[0][0][1]=0;
        for(int i=1;i<=T;i++)
        {
            for(int j=0;j<=W;j++)
            {
                for(int k=1;k<=2;k++)
                {
                    int t=1+(j%2);
                    f[i][j][k]=f[i-1][j][k];
                    if(i>0 and j>0)
                    {
                        f[i][j][k]=max(f[i][j][k],f[i-1][j-1][3-k]);
                    }
                    if(t==s[i])
                    {
                        f[i][j][k]++;
                    }
                }
            }
        }
        cout<<max(f[T][W][1],f[T][W][2]);
        return 0;
    }
    

    Information

    ID
    3038
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    10
    Tags
    (None)
    # Submissions
    10
    Accepted
    3
    Uploaded By