Submission #239049

# Submission time Handle Problem Language Result Execution time Memory
239049 2020-06-14T08:24:02 Z T0p_ Miners (IOI07_miners) C++14
100 / 100
177 ms 512 KB
#include<bits/stdc++.h>
using namespace std;

long long dp[2][4][4][4][4];
map<char, int> mp;

int cost(int a, int b, int c)
{
	int ret = 0;
	if(a == 1 || b == 1 || c == 1) ret++;
	if(a == 2 || b == 2 || c == 2) ret++;
	if(a == 3 || b == 3 || c == 3) ret++;
	return ret;
}

int main()
{
	mp['M'] = 1;
	mp['B'] = 2;
	mp['F'] = 3;
	for(int i=0 ; i<2 ; i++)
		for(int j=0 ; j<4 ; j++)
			for(int k=0 ; k<4 ; k++)
				for(int l=0 ; l<4 ; l++)
					for(int m=0 ; m<4 ; m++)
						dp[i][j][k][l][m] = -1e18;
	dp[0][0][0][0][0] = 0;
	int n;
	scanf(" %d",&n);
	for(int i=1 ; i<=n ; i++)
	{
		char c;
		scanf(" %c",&c);
		int z = mp[c];
		for(int j=0 ; j<4 ; j++)
			for(int k=0 ; k<4 ; k++)
				for(int l=0 ; l<4 ; l++)
					for(int m=0 ; m<4 ; m++)
					{
						dp[i%2][k][z][l][m] = max(dp[i%2][k][z][l][m], dp[(i-1)%2][j][k][l][m] + cost(j, k, z));
						dp[i%2][j][k][m][z] = max(dp[i%2][j][k][m][z], dp[(i-1)%2][j][k][l][m] + cost(l, m, z));
					}
	}
	long long ans = -1e18;
	for(int j=0 ; j<4 ; j++)
		for(int k=0 ; k<4 ; k++)
			for(int l=0 ; l<4 ; l++)
				for(int m=0 ; m<4 ; m++)
					ans = max(ans, dp[n%2][j][k][l][m]);
	printf("%lld\n",ans);
	return 0;
}

Compilation message

miners.cpp: In function 'int main()':
miners.cpp:29:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf(" %d",&n);
  ~~~~~^~~~~~~~~~
miners.cpp:33:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf(" %c",&c);
   ~~~~~^~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 5 ms 256 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 256 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 5 ms 256 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 5 ms 256 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 6 ms 256 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 12 ms 256 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 21 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 49 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 142 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 177 ms 512 KB Output is correct