Submission #197563

# Submission time Handle Problem Language Result Execution time Memory
197563 2020-01-21T16:50:04 Z Peacher29 Miners (IOI07_miners) C++14
100 / 100
144 ms 476 KB
#include<bits/stdc++.h>

using namespace std;

int val(int a, int b, int c){
	int db=0;
	for(int i=1;i<=3;i++){
		if(a==i || b==i || c==i){
			++db;
		}
	}
return db;
}

int dp[2][4][4][4][4];
bool reach[2][4][4][4][4];

int main(){
	int n;
	char c;
	cin >> n;
	int mx=0;
	reach[1][0][0][0][0]=1;
	for(int i=0;i<n;i++){
		cin >> c;
		int mi;
		if(c=='M') mi = 1;
		if(c=='B') mi = 2;
		if(c=='F') mi = 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%2][a][b][c][d]=0;
						reach[i%2][a][b][c][d]=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++){
						if(reach[!(i%2)][a][b][c][d]){
							reach[i%2][mi][a][c][d] = 1;
							reach[i%2][a][b][mi][c] = 1;
							dp[i%2][mi][a][c][d]=max(dp[!(i%2)][a][b][c][d]+val(mi,a,b),dp[i%2][mi][a][c][d]);
							mx=max(mx,dp[i%2][mi][a][c][d]);
							dp[i%2][a][b][mi][c]=max(dp[!(i%2)][a][b][c][d]+val(mi,c,d),dp[i%2][a][b][mi][c]);
							mx=max(mx,dp[i%2][a][b][mi][c]);
						}
					}
				}
			}
		}
	}
	cout << mx;
return 0;
}

Compilation message

miners.cpp: In function 'int main()':
miners.cpp:8:7: warning: 'mi' may be used uninitialized in this function [-Wmaybe-uninitialized]
   if(a==i || b==i || c==i){
      ~^~~
miners.cpp:26:7: note: 'mi' was declared here
   int mi;
       ^~
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 252 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 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 4 ms 256 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 13 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 15 ms 368 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 51 ms 476 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 92 ms 452 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 144 ms 380 KB Output is correct