Submission #39955523
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
void cumsum(vector<int> &vec)
{
for (int i = 0; i < (int)vec.size() - 1; i++)
vec[i + 1] += vec[i];
}
// 'R' について左側のみ判定
vector<bool> isok_sub(int N, string S)
{
vector<int> sumR(N + 1, 0), sumP(N + 1, 0), sumS(N + 1, 0);
for (int i = 0; i < N; i++)
{
if (S[i] == 'R')
sumR[i + 1]++;
else if (S[i] == 'P')
sumP[i + 1]++;
else
sumS[i + 1]++;
}
cumsum(sumR), cumsum(sumP), cumsum(sumS);
// 'S' のうち、左が OK であるような最も左のもの
int j = 0;
for (; j < N; j++)
{
if (S[j] != 'S')
continue;
if (sumR[j] == 0 || sumP[j] >= 1)
break;
}
vector<bool> isok(N, false);
for (int i = 0; i < N; i++)
{
if (S[i] != 'R')
continue;
if (i == 0)
{
isok[i] = true;
continue;
}
if (sumR[i] - sumR[j] == 0 || sumP[i] - sumP[j] >= 1)
isok[i] = true;
else if (i != 0 && S[i - 1] == 'S' && (sumR[i - 1] == 0 || sumP[i - 1] >= 1))
isok[i] = true;
}
return isok;
}
// 左と右をつきあわせて 'R' についてのみ判定し、個数を数える
int sub(int N, string S)
{
string T = S;
reverse(T.begin(), T.end());
vector<bool> isok1 = isok_sub(N, S), isok2 = isok_sub(N, T);
int ans = 0;
for (int i = 0; i < N; i++)
{
if (isok1[i] && isok2[N - 1 - i])
ans++;
}
return ans;
}
string rotate(int N, string S)
{
string T;
for (int i = 0; i < N; i++)
{
if (S[i] == 'R')
T += 'S';
else if (S[i] == 'S')
T += 'P';
else
T += 'R';
}
return T;
}
int main()
{
int N;
string S;
cin >> N >> S;
string T = rotate(N, S);
string U = rotate(N, T);
int ans = sub(N, S) + sub(N, T) + sub(N, U);
cout << ans << endl;
}
Submission Info
| Submission Time | |
|---|---|
| Task | L - Small RPS Tournament |
| User | miscalculation53 |
| Language | C++ (GCC 9.2.1) |
| Score | 100 |
| Code Size | 1902 Byte |
| Status | AC |
| Exec Time | 51 ms |
| Memory | 9220 KiB |
Judge Result
| Set Name | Sample | Subtask1 | Subtask2 | All | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 10 / 10 | 40 / 40 | 50 / 50 | ||||||||
| Status |
|
|
|
|
| Set Name | Test Cases |
|---|---|
| Sample | 00_sample_00, 00_sample_01, 00_sample_02 |
| Subtask1 | 00_sample_00, 00_sample_01, 00_sample_02, 01_min_00, 01_min_01, 01_min_02, 01_min_03, 01_min_04, 02_small_00, 02_small_01, 02_small_02, 02_small_03, 02_small_04, 03_small_max_00, 03_small_max_01, 03_small_max_02, 04_small_1type_00, 05_small_2types_00, 05_small_2types_01, 05_small_2types_02, 05_small_2types_03 |
| Subtask2 | 00_sample_00, 00_sample_01, 00_sample_02, 01_min_00, 01_min_01, 01_min_02, 01_min_03, 01_min_04, 02_small_00, 02_small_01, 02_small_02, 02_small_03, 02_small_04, 03_small_max_00, 03_small_max_01, 03_small_max_02, 04_small_1type_00, 05_small_2types_00, 05_small_2types_01, 05_small_2types_02, 05_small_2types_03, 12_medium_00, 12_medium_01, 12_medium_02, 12_medium_03, 12_medium_04, 13_medium_max_00, 13_medium_max_01, 13_medium_max_02, 14_medium_1type_00, 14_medium_1type_01, 15_medium_2types_00, 15_medium_2types_01, 15_medium_2types_02, 15_medium_2types_03, 15_medium_2types_04, 15_medium_2types_05 |
| All | 00_sample_00, 00_sample_01, 00_sample_02, 01_min_00, 01_min_01, 01_min_02, 01_min_03, 01_min_04, 02_small_00, 02_small_01, 02_small_02, 02_small_03, 02_small_04, 03_small_max_00, 03_small_max_01, 03_small_max_02, 04_small_1type_00, 05_small_2types_00, 05_small_2types_01, 05_small_2types_02, 05_small_2types_03, 12_medium_00, 12_medium_01, 12_medium_02, 12_medium_03, 12_medium_04, 13_medium_max_00, 13_medium_max_01, 13_medium_max_02, 14_medium_1type_00, 14_medium_1type_01, 15_medium_2types_00, 15_medium_2types_01, 15_medium_2types_02, 15_medium_2types_03, 15_medium_2types_04, 15_medium_2types_05, 22_large_00, 22_large_01, 22_large_02, 22_large_03, 22_large_04, 23_large_max_00, 23_large_max_01, 23_large_max_02, 23_large_max_03, 23_large_max_04, 23_large_max_05, 23_large_max_06, 23_large_max_07, 23_large_max_08, 23_large_max_09, 24_large_1type_00, 24_large_1type_01, 24_large_1type_02, 24_large_1type_03, 24_large_1type_04, 24_large_1type_05, 25_large_2types_00, 25_large_2types_01, 25_large_2types_02, 25_large_2types_03, 25_large_2types_04, 25_large_2types_05, 25_large_2types_06, 25_large_2types_07, 25_large_2types_08, 25_large_2types_09, 25_large_2types_10, 25_large_2types_11, 25_large_2types_12, 25_large_2types_13, 25_large_2types_14, 25_large_2types_15 |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00_sample_00 | AC | 1 ms | 3336 KiB |
| 00_sample_01 | AC | 3 ms | 3400 KiB |
| 00_sample_02 | AC | 2 ms | 3396 KiB |
| 01_min_00 | AC | 2 ms | 3388 KiB |
| 01_min_01 | AC | 1 ms | 3364 KiB |
| 01_min_02 | AC | 2 ms | 3580 KiB |
| 01_min_03 | AC | 2 ms | 3448 KiB |
| 01_min_04 | AC | 2 ms | 3384 KiB |
| 02_small_00 | AC | 2 ms | 3548 KiB |
| 02_small_01 | AC | 5 ms | 3496 KiB |
| 02_small_02 | AC | 2 ms | 3552 KiB |
| 02_small_03 | AC | 2 ms | 3496 KiB |
| 02_small_04 | AC | 3 ms | 3436 KiB |
| 03_small_max_00 | AC | 2 ms | 3560 KiB |
| 03_small_max_01 | AC | 2 ms | 3452 KiB |
| 03_small_max_02 | AC | 2 ms | 3560 KiB |
| 04_small_1type_00 | AC | 2 ms | 3432 KiB |
| 05_small_2types_00 | AC | 2 ms | 3432 KiB |
| 05_small_2types_01 | AC | 2 ms | 3496 KiB |
| 05_small_2types_02 | AC | 2 ms | 3404 KiB |
| 05_small_2types_03 | AC | 2 ms | 3428 KiB |
| 12_medium_00 | AC | 2 ms | 3528 KiB |
| 12_medium_01 | AC | 2 ms | 3500 KiB |
| 12_medium_02 | AC | 2 ms | 3424 KiB |
| 12_medium_03 | AC | 2 ms | 3468 KiB |
| 12_medium_04 | AC | 2 ms | 3504 KiB |
| 13_medium_max_00 | AC | 3 ms | 3616 KiB |
| 13_medium_max_01 | AC | 2 ms | 3612 KiB |
| 13_medium_max_02 | AC | 2 ms | 3464 KiB |
| 14_medium_1type_00 | AC | 2 ms | 3516 KiB |
| 14_medium_1type_01 | AC | 2 ms | 3556 KiB |
| 15_medium_2types_00 | AC | 2 ms | 3468 KiB |
| 15_medium_2types_01 | AC | 2 ms | 3468 KiB |
| 15_medium_2types_02 | AC | 3 ms | 3492 KiB |
| 15_medium_2types_03 | AC | 2 ms | 3488 KiB |
| 15_medium_2types_04 | AC | 2 ms | 3460 KiB |
| 15_medium_2types_05 | AC | 1 ms | 3492 KiB |
| 22_large_00 | AC | 11 ms | 3716 KiB |
| 22_large_01 | AC | 29 ms | 5440 KiB |
| 22_large_02 | AC | 37 ms | 7664 KiB |
| 22_large_03 | AC | 33 ms | 7472 KiB |
| 22_large_04 | AC | 23 ms | 5296 KiB |
| 23_large_max_00 | AC | 51 ms | 9028 KiB |
| 23_large_max_01 | AC | 50 ms | 8996 KiB |
| 23_large_max_02 | AC | 50 ms | 9176 KiB |
| 23_large_max_03 | AC | 37 ms | 9056 KiB |
| 23_large_max_04 | AC | 45 ms | 9036 KiB |
| 23_large_max_05 | AC | 35 ms | 8996 KiB |
| 23_large_max_06 | AC | 41 ms | 9056 KiB |
| 23_large_max_07 | AC | 35 ms | 9040 KiB |
| 23_large_max_08 | AC | 49 ms | 9032 KiB |
| 23_large_max_09 | AC | 17 ms | 5980 KiB |
| 24_large_1type_00 | AC | 20 ms | 5324 KiB |
| 24_large_1type_01 | AC | 29 ms | 8644 KiB |
| 24_large_1type_02 | AC | 32 ms | 9056 KiB |
| 24_large_1type_03 | AC | 31 ms | 9052 KiB |
| 24_large_1type_04 | AC | 21 ms | 7180 KiB |
| 24_large_1type_05 | AC | 33 ms | 9004 KiB |
| 25_large_2types_00 | AC | 14 ms | 4304 KiB |
| 25_large_2types_01 | AC | 10 ms | 3812 KiB |
| 25_large_2types_02 | AC | 49 ms | 9044 KiB |
| 25_large_2types_03 | AC | 46 ms | 9036 KiB |
| 25_large_2types_04 | AC | 46 ms | 9032 KiB |
| 25_large_2types_05 | AC | 46 ms | 9152 KiB |
| 25_large_2types_06 | AC | 32 ms | 6772 KiB |
| 25_large_2types_07 | AC | 41 ms | 7500 KiB |
| 25_large_2types_08 | AC | 20 ms | 5340 KiB |
| 25_large_2types_09 | AC | 45 ms | 9000 KiB |
| 25_large_2types_10 | AC | 39 ms | 7872 KiB |
| 25_large_2types_11 | AC | 44 ms | 8996 KiB |
| 25_large_2types_12 | AC | 24 ms | 6788 KiB |
| 25_large_2types_13 | AC | 31 ms | 8992 KiB |
| 25_large_2types_14 | AC | 28 ms | 7924 KiB |
| 25_large_2types_15 | AC | 32 ms | 9220 KiB |