Submission #103385

# Submission time Handle Problem Language Result Execution time Memory
103385 2019-03-30T05:55:57 Z Berted Miners (IOI07_miners) C++14
100 / 100
226 ms 640 KB
#include <iostream>
using namespace std;
int n,ar[2][4][4][4][4]={},mx=1;string s;
int ts(char a)
{
	if (a=='M') {return 1;}
	else if (a=='B') {return 2;}
	else {return 3;}
}
int hm(int a,int b,int c)
{
	bool mp[4]={};int to=0;
	if (a!=0&&!mp[a]) {mp[a]=true;to++;}
	if (b!=0&&!mp[b]) {mp[b]=true;to++;}
	if (c!=0&&!mp[c]) {mp[c]=true;to++;}
	return to;
}
int main()
{
 	/*
	#ifndef ONLINE_JUDGE
		freopen("in.txt","r",stdin);
		freopen("out.txt","w",stdout);
	#endif*/
 
	cin>>n>>s;
	ar[1][0][0][0][ts(s[0])] = 1;
	ar[1][0][ts(s[0])][0][0] = 1;
	for (int a=2;a<=n;a++)
	{
		for (int b=0;b<4;b++)
		{
			for (int c=0;c<4;c++)
			{
				for (int d=0;d<4;d++)
				{
					for (int e=0;e<4;e++)
					{
						if (ar[(a-1)%2][b][c][d][e]>0)
						{
							ar[a%2][c][ts(s[a-1])][d][e] = max(ar[a%2][c][ts(s[a-1])][d][e],ar[(a-1)%2][b][c][d][e]+hm(b,c,ts(s[a-1])));
							ar[a%2][b][c][e][ts(s[a-1])] = max(ar[a%2][b][c][e][ts(s[a-1])],ar[(a-1)%2][b][c][d][e]+hm(d,e,ts(s[a-1])));
							mx=max(mx,ar[a%2][c][ts(s[a-1])][d][e]);
							mx=max(mx,ar[a%2][b][c][e][ts(s[a-1])]);
						}
					}
				}
			}
		}
	}
	cout<<mx<<"\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 3 ms 512 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 3 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 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 256 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 11 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 28 ms 436 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 60 ms 440 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 159 ms 640 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 226 ms 640 KB Output is correct