Submission #306331

# Submission time Handle Problem Language Result Execution time Memory
306331 2020-09-25T09:03:03 Z sofapuden Miners (IOI07_miners) C++14
100 / 100
1243 ms 100728 KB
#include <bits/stdc++.h>

using namespace std;
int dp[100005][4][4][4][4];

int main(){
	int n; cin >> n;
	memset(dp,0,sizeof dp);
	dp[0][0][0][0][0] = 1;
	for(int x = 0; x < n; ++x){
		char c; cin >> c;
		int val = 0;
		if(c == 'M')val = 1;
		if(c == 'B')val = 2;
		if(c == 'F')val = 3;
		for(int i = 0; i < 4; ++i){
			for(int j = 0; j < 4; ++j){
				for(int k = 0; k < 4; ++k){
					for(int l = 0; l < 4; ++l){
						if(!dp[x][i][j][k][l])continue;
						set<int> ans1, ans2;
						ans1.insert(i);
						ans1.insert(j);
						ans1.insert(val);
						ans2.insert(k);
						ans2.insert(l);
						ans2.insert(val);
						ans1.erase(0);
						ans2.erase(0);
						dp[x+1][j][val][k][l] = max(dp[x+1][j][val][k][l], dp[x][i][j][k][l]+(int)ans1.size());
						dp[x+1][i][j][l][val] = max(dp[x+1][i][j][l][val], dp[x][i][j][k][l]+(int)ans2.size());
						
					}
				}
			}
		}
	}
	int ans = 0;
	for(int i = 0; i < 4; ++i){
		for(int j = 0; j < 4; ++j){
			for(int k = 0; k < 4; ++k){
				for(int l = 0; l < 4; ++l){
					ans = max(ans, dp[n][i][j][k][l]);
				}
			}
		}
	}
	cout << ans-1 << "\n";

		
}
			
					
			
			
# Verdict Execution time Memory Grader output
1 Correct 62 ms 100472 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 61 ms 100472 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 63 ms 100468 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 62 ms 100472 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 63 ms 100476 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 61 ms 100472 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 75 ms 100472 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 86 ms 100508 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 187 ms 100608 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 313 ms 100600 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 566 ms 100728 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1243 ms 100728 KB Output is correct