Submission #839259

# Submission time Handle Problem Language Result Execution time Memory
839259 2023-08-29T11:14:55 Z AndrijaM Miners (IOI07_miners) C++14
100 / 100
827 ms 149868 KB
#include<bits/stdc++.h>

using namespace std;
typedef int ll;
const int maxn=1e5 + 10;
int di[4]={1,-1,0,0};
int dj[4]={0,0,-1,1};
int n;
string s;
int dp[maxn][4][4][4][4];

int f(int idx,int a,int b,int c,int d)
{
    if(idx==n)
    {
        return 0;
    }
    if(dp[idx][a][b][c][d]!=-1)return dp[idx][a][b][c][d];
    int rez=0;
    int x=0;
    if(s[idx]=='M')
    {
        x=1;
    }
    else if(s[idx]=='F')
    {
        x=2;
    }
    else
    {
        x=3;
    }
    set<int>se1;
    se1.insert(a);
    se1.insert(b);
    se1.insert(x);
    set<int>se2;
    se2.insert(c);
    se2.insert(d);
    se2.insert(x);
    int num=se1.size();
    if(a==0 || b==0)
    {
        num--;
    }
    rez=max(rez, f(idx+1,b,x,c,d)+num);
    num=se2.size();
    if(c==0 || d==0)
    {
        num--;
    }
    rez=max(rez, f(idx+1,a,b,d,x)+num);
    return dp[idx][a][b][c][d]=rez;
}

int main()
{
    ios_base::sync_with_stdio(false); cin.tie(0);
    cin>>n>>s;
    memset(dp,-1,sizeof dp);
    cout<<f(0,0,0,0,0)<<endl;
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 29 ms 100436 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 37 ms 100428 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 32 ms 100428 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 34 ms 100420 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 31 ms 100436 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 32 ms 100408 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 37 ms 100952 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 46 ms 102604 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 104 ms 105448 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 223 ms 112048 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 379 ms 131916 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 827 ms 149868 KB Output is correct