Submission #899550

# Submission time Handle Problem Language Result Execution time Memory
899550 2024-01-06T12:35:31 Z Nonoze Miners (IOI07_miners) C++17
100 / 100
358 ms 756 KB
#include <bits/stdc++.h>
#define sz(x) (int)(x.size())

using namespace std;

int n;
string seq;
vector<vector<vector<vector<int>>>> dp(4, vector<vector<vector<int>>> (4, vector<vector<int>> (4, vector<int>(4, 0))));
vector<vector<vector<vector<int>>>> lst=dp;

int sum(int a, int b, int c) {
	int ans=0;
	for (int i=1; i<4; i++) {
		if (a==i || b==i || c==i) ans++;
	}
	return ans;
}

void solve() {
	cin >> n;
	cin >> seq;

	for (int i=n-1; i>=0; i--) {
		int vaut=1;
		if (seq[i]=='F') vaut=2;
		if (seq[i]=='B') vaut=3;
		for (int prec11=0; prec11<4; prec11++) {
			for (int prec12=0; prec12<4; prec12++) {
				for (int prec21=0; prec21<4; prec21++) {
					for (int prec22=0; prec22<4; prec22++) {
						dp[prec11][prec12][prec21][prec22]=
						max(sum(prec11, prec12, vaut)+lst[vaut][prec11][prec21][prec22],
							sum(prec21, prec22, vaut)+lst[prec11][prec12][vaut][prec21]);
					}
				}
			}
		}
		lst=dp;
	}

	cout << dp[0][0][0][0] << endl;
	return;
}


signed main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	int tt=1;// cin >> tt;
	while(tt--) solve();
	return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 604 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 18 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 37 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 89 ms 516 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 255 ms 704 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 358 ms 756 KB Output is correct