Submission #857968

# Submission time Handle Problem Language Result Execution time Memory
857968 2023-10-07T08:11:34 Z TAhmed33 Linear Garden (IOI08_linear_garden) C++
54 / 100
120 ms 30132 KB
#include <bits/stdc++.h>
using namespace std;
int m;
int add (int a, int b) {
	a += b; if (a >= m) a -= m;
	return a;
}
int sub (int a, int b) {
	a -= b; if (a < 0) a += m;
	return a;
}
int mul (int a, int b) {
	return (a * 1ll * b) % m;
}
int dp[2][5][5][5];
string s;
inline int get (int a, int b, int c, int d) {
	if (d < 0 || d > 4) return 0;
	if (b < 0 || b > 4) return 0;
	if (c < 0 || c > 4) return 0;
	return dp[a & 1][b][c][d];
}
int main () {
	int n;
	cin >> n >> m;
	cin >> s;
	vector <vector <int>> x;
	int a = 2, b = 2, c = 2;
	for (int i = 0; i < n; i++) {
		if (s[i] == 'P') {
			x.push_back({(int)s.length() - i - 1, min(c + 1, a), max(c + 1, b), c + 1});
			c--; a = min(a, c); b = max(b, c);
		} else {
			c++; a = min(c, a); b = max(b, c);
		}
	}
	int sum = 1;	
	for (int j = 0; j <= 2; j++) for (int k = 2; k <= min(4, j + 2); k++) for (int l = j; l <= k; l++) dp[0][j][k][l] = 1;
	for (int i = 1; i <= n; i++) {
		for (int j = 0; j <= 2; j++) { //low
			for (int k = 2; k <= min(4, j + 2); k++) { //high
				for (int l = j; l <= k; l++) {
					int &ret = dp[i & 1][j][k][l];
					ret = 0;
					ret = add(ret, get(i - 1, min(j, l - 1), max(k, l - 1), l - 1));
					ret = add(ret, get(i - 1, min(j, l + 1), max(k, l + 1), l + 1));
				}
			}
		}
		if (!x.empty() && x.back()[0] == i) {
			sum = add(sum, get(i, x.back()[1], x.back()[2], x.back()[3]));
			x.pop_back();
		}
	}
	cout << sum << '\n';
}
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 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 Incorrect 0 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Incorrect 0 ms 348 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 536 KB Output is correct
2 Correct 1 ms 600 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 1116 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 1084 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 7 ms 2068 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 10 ms 3092 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 36 ms 12396 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 45 ms 12904 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 59 ms 15364 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 72 ms 22720 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 115 ms 29616 KB Output is correct
2 Correct 120 ms 30132 KB Output is correct
3 Incorrect 101 ms 29580 KB Output isn't correct
4 Halted 0 ms 0 KB -