#include <bits/stdc++.h>
using namespace std;
#define FOR(i, a, b) for (int i=(a); i<=(b); ++i)
const int maxn = 1e6 + 5;
typedef pair <int, int> PII;
typedef long long ll;
const int mod = 1e9 + 7;
int dp[2][305][605];
//dp[length][stacksize in RG][stacksize in RB]
int type, n;
string s;
int stos[1000100], DL = 0;
char arr[1000100];
int result[305];
void solveone()
{
cin >> s;
int m = (int)s.size();
DL = 0;
for (int i = 0; i < m; ++i)
{
if (s[i] == '(') stos[++DL] = i, arr[i] = 'R';
else
{
if (DL > 0)
{
arr[stos[DL]] = 'B';
arr[i] = 'B';
DL--;
}
else arr[i] = 'R';
}
}
int wait = 0;
for (int i = 0; i < m; ++i)
if (arr[i] == 'R' && s[i] == '(') ++wait;
else if (arr[i] == 'B' && s[i] == ')' && wait > 0)
{
--wait;
arr[i] = 'G';
}
if (wait > 0)
{
cout << "impossible\n";
return;
}
wait = 0;
for (int i = m - 1; i >= 0; --i)
{
if (arr[i] == 'R' && s[i] == ')') ++wait;
else if (arr[i] == 'B' && s[i] == '(' && wait > 0)
{
--wait;
arr[i] = 'G';
}
}
if (wait > 0)
{
cout << "impossible\n";
return;
}
for (int i = 0; i < m; ++i) cout << arr[i];
cout << "\n";
}
inline void addmod(int &x, int v) { x += v; while (x >= mod) x -= mod; }
int main()
{
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
cin >> type;
if (type == 1)
{
cin >> n;
for (int i=0; i<n; ++i) solveone();
}
if (type == 2)
{
int tests;
n = 301;
dp[0][0][0] = 1; //one sequence
for (int i=1; i<=n; ++i)
{
FOR(j, 0, n)
FOR(k, 0, n) dp[i & 1][j][k] = 0;
FOR(j, 0, n)
FOR(k, j, 2 * i)
{
//i have two options: either update with ) or with (
if (k - 1 >= 0) addmod(dp[i & 1][max(j - 2, 0)][k - 1], dp[(i & 1) ^ 1][j][k]);
addmod(dp[i & 1][j + 1][k + 2], dp[(i & 1) ^ 1][j][k]);
}
for (int j = 0; j <= 2 * i; ++j) addmod(result[i], dp[i & 1][0][j]);
}
cin >> tests;
while (tests--)
{
cin >> n;
cout << result[n] << "\n";
}
}
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
444 KB |
Output is correct |
3 |
Correct |
2 ms |
444 KB |
Output is correct |
4 |
Correct |
3 ms |
472 KB |
Output is correct |
5 |
Correct |
2 ms |
496 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
3 ms |
496 KB |
Output is correct |
2 |
Correct |
2 ms |
496 KB |
Output is correct |
3 |
Correct |
3 ms |
540 KB |
Output is correct |
4 |
Correct |
3 ms |
616 KB |
Output is correct |
5 |
Correct |
3 ms |
616 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
3 ms |
496 KB |
Output is correct |
2 |
Correct |
2 ms |
496 KB |
Output is correct |
3 |
Correct |
3 ms |
540 KB |
Output is correct |
4 |
Correct |
3 ms |
616 KB |
Output is correct |
5 |
Correct |
3 ms |
616 KB |
Output is correct |
6 |
Correct |
3 ms |
620 KB |
Output is correct |
7 |
Correct |
2 ms |
620 KB |
Output is correct |
8 |
Correct |
2 ms |
620 KB |
Output is correct |
9 |
Correct |
2 ms |
620 KB |
Output is correct |
10 |
Correct |
2 ms |
620 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
3 ms |
496 KB |
Output is correct |
2 |
Correct |
2 ms |
496 KB |
Output is correct |
3 |
Correct |
3 ms |
540 KB |
Output is correct |
4 |
Correct |
3 ms |
616 KB |
Output is correct |
5 |
Correct |
3 ms |
616 KB |
Output is correct |
6 |
Correct |
3 ms |
620 KB |
Output is correct |
7 |
Correct |
2 ms |
620 KB |
Output is correct |
8 |
Correct |
2 ms |
620 KB |
Output is correct |
9 |
Correct |
2 ms |
620 KB |
Output is correct |
10 |
Correct |
2 ms |
620 KB |
Output is correct |
11 |
Correct |
2 ms |
620 KB |
Output is correct |
12 |
Correct |
3 ms |
620 KB |
Output is correct |
13 |
Correct |
3 ms |
636 KB |
Output is correct |
14 |
Correct |
3 ms |
636 KB |
Output is correct |
15 |
Correct |
4 ms |
652 KB |
Output is correct |
16 |
Correct |
7 ms |
780 KB |
Output is correct |
17 |
Correct |
9 ms |
1036 KB |
Output is correct |
18 |
Correct |
9 ms |
1036 KB |
Output is correct |
19 |
Correct |
8 ms |
1036 KB |
Output is correct |
20 |
Correct |
11 ms |
1096 KB |
Output is correct |
21 |
Correct |
37 ms |
1424 KB |
Output is correct |
22 |
Correct |
67 ms |
3764 KB |
Output is correct |
23 |
Correct |
46 ms |
3764 KB |
Output is correct |
24 |
Correct |
49 ms |
3764 KB |
Output is correct |
25 |
Correct |
63 ms |
3764 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
109 ms |
3764 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
109 ms |
3764 KB |
Output is correct |
2 |
Correct |
107 ms |
3764 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
109 ms |
3764 KB |
Output is correct |
2 |
Correct |
107 ms |
3764 KB |
Output is correct |
3 |
Incorrect |
130 ms |
3764 KB |
Output isn't correct |