Submission #21865521


Source Code Expand

#include <bits/stdc++.h>
#define i64 long long
#define sz(a) int((a).size())
#define all(a) (a).begin(), (a).end()
#define rep(i, a, b) for (int i = (a); i < (b); ++i)
#define per(i, a, b) for (int i = (b) - 1; i >= (a); --i)
using namespace std;

const int M = 3;
struct mint {
	int x; mint(int x) : x(x) {}
	friend mint operator + (const mint &a, const mint b)
	 {const int x = a.x + b.x; return mint(x >= M ? x - M : x);}
	friend mint operator - (const mint &a, const mint b)
	 {const int x = a.x - b.x; return mint(x < 0 ? x + M : x);}
	friend mint operator * (const mint &a, const mint b)
	 {return mint(1ll * a.x * b.x % M);}
};
int Pw(int a, int x = M - 2, int res = 1) {
	for (; x; x >>= 1, a = (mint(a) * a).x)
	 {if (x & 1) {res = (mint(res) * a).x;}}
	return res;
}

const int N = 4e5;
int n; string s;
struct par {
	int p, c;
	par(int x) : p(x), c(0) {while (!(p % M)) {p /= M, ++c;}}
};

int main() {
	// freopen("c.in", "r", stdin); //
	ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
	cin >> n >> s;
	int res = 0; par f = 1;
	rep(i, 0, n) {
		int x = s[i] == 'B' ? 0 : (s[i] == 'W' ? 1 : 2);
		// cout << f.p << ' ' << f.c << '\n'; //
		if (!f.c) {res = (res + mint(f.p) * x).x;}
		if (i == n - 1) {break;}
		par m = n - 1 - i, d = i + 1;
		f.p = (mint(f.p) * m.p * Pw(d.p)).x;
		f.c = f.c + m.c - d.c;
	}
	if (!(n & 1)) {res = (mint(0) - res).x;}
	cout << (res == 0 ? 'B' : (res == 1 ? 'W' : 'R')) << '\n';
	return 0;
}

/* 📌https://www.cnblogs.com/George1123/p/tips.html */

Submission Info

Submission Time
Task C - Tricolor Pyramid
User George1123
Language C++ (GCC 9.2.1)
Score 600
Code Size 1549 Byte
Status AC
Exec Time 21 ms
Memory 3896 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 5
AC × 44
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, sample_05.txt
All corner_01.txt, corner_02.txt, corner_03.txt, corner_04.txt, corner_05.txt, corner_06.txt, corner_07.txt, corner_08.txt, corner_09.txt, in01.txt, in02.txt, in03.txt, in04.txt, in05.txt, in06.txt, in07.txt, in08.txt, in09.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, in27.txt, in28.txt, in29.txt, in30.txt, sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, sample_05.txt
Case Name Status Exec Time Memory
corner_01.txt AC 4 ms 3536 KiB
corner_02.txt AC 2 ms 3496 KiB
corner_03.txt AC 3 ms 3548 KiB
corner_04.txt AC 2 ms 3536 KiB
corner_05.txt AC 3 ms 3524 KiB
corner_06.txt AC 3 ms 3552 KiB
corner_07.txt AC 2 ms 3576 KiB
corner_08.txt AC 2 ms 3524 KiB
corner_09.txt AC 2 ms 3592 KiB
in01.txt AC 14 ms 3624 KiB
in02.txt AC 7 ms 3724 KiB
in03.txt AC 10 ms 3728 KiB
in04.txt AC 7 ms 3644 KiB
in05.txt AC 14 ms 3652 KiB
in06.txt AC 12 ms 3788 KiB
in07.txt AC 13 ms 3784 KiB
in08.txt AC 17 ms 3748 KiB
in09.txt AC 19 ms 3852 KiB
in10.txt AC 15 ms 3832 KiB
in11.txt AC 18 ms 3788 KiB
in12.txt AC 18 ms 3800 KiB
in13.txt AC 21 ms 3784 KiB
in14.txt AC 13 ms 3852 KiB
in15.txt AC 17 ms 3832 KiB
in16.txt AC 16 ms 3744 KiB
in17.txt AC 14 ms 3852 KiB
in18.txt AC 17 ms 3792 KiB
in19.txt AC 14 ms 3796 KiB
in20.txt AC 14 ms 3732 KiB
in21.txt AC 15 ms 3844 KiB
in22.txt AC 16 ms 3796 KiB
in23.txt AC 11 ms 3844 KiB
in24.txt AC 11 ms 3736 KiB
in25.txt AC 12 ms 3788 KiB
in26.txt AC 13 ms 3840 KiB
in27.txt AC 20 ms 3844 KiB
in28.txt AC 12 ms 3792 KiB
in29.txt AC 15 ms 3896 KiB
in30.txt AC 14 ms 3848 KiB
sample_01.txt AC 3 ms 3552 KiB
sample_02.txt AC 2 ms 3644 KiB
sample_03.txt AC 3 ms 3572 KiB
sample_04.txt AC 2 ms 3592 KiB
sample_05.txt AC 2 ms 3668 KiB