Submission #862503

# Submission time Handle Problem Language Result Execution time Memory
862503 2023-10-18T11:26:32 Z JakobZorz Miners (IOI07_miners) C++14
100 / 100
148 ms 101600 KB
#include<iostream>
#include<vector>
#include<queue>
#include<stack>
#include<algorithm>
#include<limits.h>
#include<math.h>
#include<map>
#include<set>
#include<unordered_map>
#include<unordered_set>
#include<iomanip>
typedef long long ll;
typedef long double ld;
using namespace std;
const int MOD=1e9+7;
//typedef pair<ll,ll>Point;
//typedef pair<ll,ll>Line;
//#define x first
//#define y second

int n;
string str;

int get_val(int a,int b,int c){
    if(a==0&&b==0)
        return 1;
    
    if(a==0)
        return b!=c?2:1;
    
    int res=3;
    if(a==b||b==c||a==c)
        res=2;
    if(a==b&&b==c)
        res=1;
    return res;
}

bool dpt[4][4][4][4][100000];
int dp[4][4][4][4][100000];
int get(int m1,int m2,int m3,int m4,int i){
    if(i==n)
        return 0;
    if(dpt[m1][m2][m3][m4][i])
        return dp[m1][m2][m3][m4][i];
    
    int curr=0;
    if(str[i]=='M')
        curr=1;
    if(str[i]=='B')
        curr=2;
    if(str[i]=='F')
        curr=3;
    
    int val1=get(m2,curr,m3,m4,i+1);
    int val2=get_val(m1,m2,curr);
    
    int r1=get(m2,curr,m3,m4,i+1)+get_val(m1,m2,curr);
    
    int r2=get(m1,m2,m4,curr,i+1)+get_val(m3,m4,curr);
    
    dpt[m1][m2][m3][m4][i]=true;
    dp[m1][m2][m3][m4][i]=max(r1,r2);
    
    return max(r1,r2);
}

int main(){
    ios::sync_with_stdio(false);
    cout.tie(NULL);
    cin.tie(NULL);
    
    //freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);
    
    cin>>n;
    cin>>str;
    cout<<get(0,0,0,0,0)<<"\n";
    
    return 0;
}

Compilation message

miners.cpp: In function 'int get(int, int, int, int, int)':
miners.cpp:56:9: warning: unused variable 'val1' [-Wunused-variable]
   56 |     int val1=get(m2,curr,m3,m4,i+1);
      |         ^~~~
miners.cpp:57:9: warning: unused variable 'val2' [-Wunused-variable]
   57 |     int val2=get_val(m1,m2,curr);
      |         ^~~~
# Verdict Execution time Memory Grader output
1 Correct 4 ms 39516 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 6 ms 60504 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 37468 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 6 ms 60760 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 39516 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 39440 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 8 ms 59228 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 7 ms 40540 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 19 ms 59364 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 45 ms 64700 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 84 ms 88764 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 148 ms 101600 KB Output is correct