Submission #428400

# Submission time Handle Problem Language Result Execution time Memory
428400 2021-06-15T11:23:29 Z ponkung Miners (IOI07_miners) C++14
100 / 100
191 ms 512 KB
#include<bits/stdc++.h>
using namespace std;
int n,dp[2][4][4][4][4],val,mx=0,hsh[4],kmp;
char str[100005];
int main()
{
    for(int j=0;j<4;j++)
    {
        for(int k=0;k<4;k++)
        {
            for(int l=0;l<4;l++)
            {
                for(int c=0;c<4;c++)
                {
                    dp[0][j][k][l][c]=-1e9;
                }
            }
        }
    }
    dp[0][0][0][0][0]=0;
    scanf("%d%s",&n,str+1);
    for(int i=1;i<=n;i++)
    {
        //printf("%d\n",i);
        for(int j=0;j<4;j++)
        {
            for(int k=0;k<4;k++)
            {
                for(int l=0;l<4;l++)
                {
                    for(int c=0;c<4;c++)
                    {
                        dp[i%2][j][k][l][c]=-1e9;
                    }
                }
            }
        }
        if(str[i]=='M')
        {
            val=1;
        }else if(str[i]=='F')
        {
            val=2;
        }else
        {
            val=3;
        }
        for(int j=0;j<4;j++)
        {
            for(int k=0;k<4;k++)
            {
                for(int l=0;l<4;l++)
                {
                    for(int c=0;c<4;c++)
                    {
                        memset(hsh,0,sizeof hsh);
                        hsh[j]=1;
                        hsh[k]=1;
                        hsh[val]=1;
                        kmp=0;
                        for(int d=1;d<=3;d++)
                        {
                            kmp+=hsh[d];
                        }
                        dp[i%2][k][val][l][c]=max(dp[i%2][k][val][l][c],dp[1-(i%2)][j][k][l][c]+kmp);
                        memset(hsh,0,sizeof hsh);
                        hsh[l]=1;
                        hsh[c]=1;
                        hsh[val]=1;
                        kmp=0;
                        for(int d=1;d<=3;d++)
                        {
                            kmp+=hsh[d];
                        }
                        dp[i%2][j][k][c][val]=max(dp[i%2][j][k][c][val],dp[1-(i%2)][j][k][l][c]+kmp);
                    }
                }
            }
        }
        /*for(int j=0;j<4;j++)
        {
            for(int k=0;k<4;k++)
            {
                for(int l=0;l<4;l++)
                {
                    for(int c=0;c<4;c++)
                    {
                        printf("%d %d %d %d %d\n",j,k,l,c,dp[i%2][j][k][c][l]);
                    }
                }
            }
        }*/
    }
    for(int i=0;i<4;i++)
    {
        for(int j=0;j<4;j++)
        {
            for(int k=0;k<4;k++)
            {
                for(int l=0;l<4;l++)
                {
                    mx=max(mx,dp[n%2][i][j][k][l]);
                }
            }
        }
    }
    printf("%d\n",mx);
}

Compilation message

miners.cpp: In function 'int main()':
miners.cpp:21:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   21 |     scanf("%d%s",&n,str+1);
      |     ~~~~~^~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 11 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 20 ms 316 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 50 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 151 ms 420 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 191 ms 512 KB Output is correct