Submission #120015

# Submission time Handle Problem Language Result Execution time Memory
120015 2019-06-23T02:50:11 Z Boxworld Miners (IOI07_miners) C++14
100 / 100
75 ms 1056 KB
#include <bits/stdc++.h>
using namespace std;
int n,x[100010];
int dp[2][4][4][4][4];
string s;
int cnt(int a,int b,int c){
	int tmp=0;
	if (a==1||b==1||c==1)tmp++;
	if (a==2||b==2||c==2)tmp++;
	if (a==3||b==3||c==3)tmp++;
	return tmp;
}
int main(){
	cin>>n>>s;
	for (int i=0;i<n;i++){
		if (s[i]=='M')x[i]=1;
		else if (s[i]=='F')x[i]=2;
		else x[i]=3;
	}
	int now=1;
	memset(dp,-1,sizeof(dp));
	dp[0][0][0][0][0]=0;
	for (int k=0;k<n;k++){
		memset(dp[now],-1,sizeof(dp[now]));
		for (int a=0;a<=3;a++)
		for (int b=0;b<=3;b++)
		for (int c=0;c<=3;c++)
		for (int d=0;d<=3;d++)
		if(dp[1-now][a][b][c][d]!=-1){
			dp[now][x[k]][a][c][d]=max(dp[now][x[k]][a][c][d],dp[1-now][a][b][c][d]+cnt(x[k],a,b));//LEFT
			dp[now][a][b][x[k]][c]=max(dp[now][a][b][x[k]][c],dp[1-now][a][b][c][d]+cnt(x[k],c,d));
		}
		now=1-now;
	}
	int ans=-1; 
	for (int a=0;a<=3;a++)
	for (int b=0;b<=3;b++)
	for (int c=0;c<=3;c++)
	for (int d=0;d<=3;d++)ans=max(ans,dp[1-now][a][b][c][d]);
	cout<<ans<<"\n";
	return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 256 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 256 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 256 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 8 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 25 ms 512 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 48 ms 872 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 75 ms 1056 KB Output is correct