Submission #1250093

#TimeUsernameProblemLanguageResultExecution timeMemory
1250093coderpemulaMiners (IOI07_miners)C++20
100 / 100
417 ms100840 KiB
#include <bits/stdc++.h>
#define ll long long
using namespace std;

int main()
{
	ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
  int n,i,j,t,k,l,m,id;
  cin>>n;
  string s;
  int dp[n+1][4][4][4][4];
  // 0 gaada
  // 1 Meat
  // 2 Fish
  // 3 Bread
  for(i=0;i<=n;i++){
    for(j=0;j<4;j++){
      for(k=0;k<4;k++){
        for(l=0;l<4;l++){
          for(m=0;m<4;m++) dp[i][j][k][l][m] = -1e9;
        }
      }
    }
  }
  cin>>s;
  dp[0][0][0][0][0] = 0;
  set<int>check;
  for(i=1;i<=n;i++){
    if(s[i-1] == 'M') id = 1;
    if(s[i-1] == 'F') id = 2;
    if(s[i-1] == 'B') id = 3;
    for(j=0;j<4;j++){
    	for(k=0;k<4;k++){
    		for(l=0;l<4;l++){
    			for(m=0;m<4;m++){
    				if(dp[i-1][j][k][l][m] < 0) continue;
    				if(j != 0) check.insert(j);
    				if(k != 0) check.insert(k);
    				check.insert(id);
    				int plus = check.size();
    				check.clear();
					dp[i][id][j][l][m] = max(dp[i][id][j][l][m],dp[i-1][j][k][l][m]+plus);
					if(l != 0) check.insert(l);
					if(m != 0) check.insert(m);
					check.insert(id);
					plus = check.size();
					check.clear();
					dp[i][j][k][id][l] = max(dp[i][j][k][id][l],dp[i-1][j][k][l][m]+plus);
				}
			}
		}
	}
  }
  int ans = 0;
  for(i=0;i<4;i++){
  	for(j=0;j<4;j++){
  		for(k=0;k<4;k++){
  			for(l=0;l<4;l++) ans = max(ans,dp[n][i][j][k][l]);
		  }
	  }
  }
  cout<<ans;
  
  return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...