Submission #411665

# Submission time Handle Problem Language Result Execution time Memory
411665 2021-05-25T17:23:16 Z Jasiekstrz Miners (IOI07_miners) C++17
100 / 100
383 ms 100808 KB
#include<bits/stdc++.h>
#define fi first
#define se second
using namespace std;
const int N=1e5;
const int INF=1e9+7;
int dp[N+10][4][4][4][4];
int f(int a,int b,int c)
{
	int ans=0;
	bool cc[4]={0,0,0,0};
	for(int i:{a,b,c})
	{
		if(i!=0 && !cc[i])
			ans++;
		cc[i]=true;
	}
	return ans;
}
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	int n;
	string s;
	cin>>n>>s;
	for(int i=0;i<=n;i++)
	{
		for(int a=0;a<4;a++)
		{
			for(int b=0;b<4;b++)
			{
				for(int c=0;c<4;c++)
				{
					for(int d=0;d<4;d++)
					{
						dp[i][a][b][c][d]=-INF;
					}
				}
			}
		}
	}
	dp[0][0][0][0][0]=0;
	for(int i=0;i<n;i++)
	{
		int x;
		if(s[i]=='M')
			x=1;
		else if(s[i]=='F')
			x=2;
		else
			x=3;
		for(int a=0;a<4;a++)
		{
			for(int b=0;b<4;b++)
			{
				for(int c=0;c<4;c++)
				{
					for(int d=0;d<4;d++)
					{
						dp[i+1][a][b][d][x]=max(dp[i+1][a][b][d][x],dp[i][a][b][c][d]+f(c,d,x));
						dp[i+1][b][x][c][d]=max(dp[i+1][b][x][c][d],dp[i][a][b][c][d]+f(a,b,x));
					}
				}
			}
		}
	}
	int ans=0;
	for(int a=0;a<4;a++)
	{
		for(int b=0;b<4;b++)
		{
			for(int c=0;c<4;c++)
			{
				for(int d=0;d<4;d++)
				{
					ans=max(ans,dp[n][a][b][c][d]);
				}
			}
		}
	}
	cout<<ans<<"\n";
	return 0;
}

# Verdict Execution time Memory Grader output
1 Correct 2 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 328 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 324 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 1228 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 24 ms 5324 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 44 ms 10316 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 90 ms 25432 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 285 ms 75712 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 383 ms 100808 KB Output is correct