#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int MAXN = 400;
const int INF = 400000;
int N, ans;
char S[MAXN+10];
int dp[MAXN+10][MAXN+10][MAXN+10][3];
int rcnt[MAXN+10], gcnt[MAXN+10], ycnt[MAXN+10];
vector<int> rpos, gpos, ypos;
int main()
{
int i, j;
scanf("%d%s", &N, S+1);
for(i=1; i<=N; i++)
{
rcnt[i]=rcnt[i-1]; gcnt[i]=gcnt[i-1]; ycnt[i]=ycnt[i-1];
if(S[i]=='R') rpos.push_back(i), rcnt[i]++;
if(S[i]=='G') gpos.push_back(i), gcnt[i]++;
if(S[i]=='Y') ypos.push_back(i), ycnt[i]++;
//printf("%d %d %d\n", rcnt[i], gcnt[i], ycnt[i]);
}
for(int r=0; r<=rpos.size(); r++)
{
for(int g=0; g<=gpos.size(); g++)
{
for(int y=0; y<=ypos.size(); y++)
{
dp[r][g][y][0]=dp[r][g][y][1]=dp[r][g][y][2]=INF;
if(r==0 && g==0 && y==0)
{
dp[r][g][y][0]=dp[r][g][y][1]=dp[r][g][y][2]=0;
continue;
}
int pos=r+g+y;
if(r!=0) dp[r][g][y][0]=min(dp[r-1][g][y][1], dp[r-1][g][y][2])+abs(rcnt[rpos[r-1]]-rcnt[pos])+abs(gcnt[rpos[r-1]]-gcnt[pos])+abs(ycnt[rpos[r-1]]-ycnt[pos]);
if(g!=0) dp[r][g][y][1]=min(dp[r][g-1][y][0], dp[r][g-1][y][2])+abs(rcnt[gpos[g-1]]-rcnt[pos])+abs(gcnt[gpos[g-1]]-gcnt[pos])+abs(ycnt[gpos[g-1]]-ycnt[pos]);
if(y!=0) dp[r][g][y][2]=min(dp[r][g][y-1][0], dp[r][g][y-1][1])+abs(rcnt[ypos[y-1]]-rcnt[pos])+abs(gcnt[ypos[y-1]]-gcnt[pos])+abs(ycnt[ypos[y-1]]-ycnt[pos]);
//printf("%d %d %d : %d %d %d\n", r, g, y, dp[r][g][y][0], dp[r][g][y][1], dp[r][g][y][2]);
}
}
}
ans=min(min(dp[rpos.size()][gpos.size()][ypos.size()][0], dp[rpos.size()][gpos.size()][ypos.size()][1]), dp[rpos.size()][gpos.size()][ypos.size()][2]);
if(ans>=INF) ans=-1;
else ans/=2;
printf("%d", ans);
}
Compilation message
joi2019_ho_t3.cpp: In function 'int main()':
joi2019_ho_t3.cpp:32:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int r=0; r<=rpos.size(); r++)
~^~~~~~~~~~~~~
joi2019_ho_t3.cpp:34:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int g=0; g<=gpos.size(); g++)
~^~~~~~~~~~~~~
joi2019_ho_t3.cpp:36:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int y=0; y<=ypos.size(); y++)
~^~~~~~~~~~~~~
joi2019_ho_t3.cpp:20:12: warning: unused variable 'j' [-Wunused-variable]
int i, j;
^
joi2019_ho_t3.cpp:22:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%s", &N, S+1);
~~~~~^~~~~~~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
376 KB |
Output is correct |
3 |
Correct |
2 ms |
256 KB |
Output is correct |
4 |
Correct |
2 ms |
376 KB |
Output is correct |
5 |
Correct |
2 ms |
504 KB |
Output is correct |
6 |
Correct |
2 ms |
504 KB |
Output is correct |
7 |
Correct |
2 ms |
376 KB |
Output is correct |
8 |
Correct |
2 ms |
504 KB |
Output is correct |
9 |
Correct |
2 ms |
504 KB |
Output is correct |
10 |
Correct |
2 ms |
632 KB |
Output is correct |
11 |
Incorrect |
2 ms |
508 KB |
Output isn't correct |
12 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
376 KB |
Output is correct |
3 |
Correct |
2 ms |
256 KB |
Output is correct |
4 |
Correct |
2 ms |
376 KB |
Output is correct |
5 |
Correct |
2 ms |
504 KB |
Output is correct |
6 |
Correct |
2 ms |
504 KB |
Output is correct |
7 |
Correct |
2 ms |
376 KB |
Output is correct |
8 |
Correct |
2 ms |
504 KB |
Output is correct |
9 |
Correct |
2 ms |
504 KB |
Output is correct |
10 |
Correct |
2 ms |
632 KB |
Output is correct |
11 |
Incorrect |
2 ms |
508 KB |
Output isn't correct |
12 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
122 ms |
163000 KB |
Output is correct |
3 |
Correct |
119 ms |
162268 KB |
Output is correct |
4 |
Correct |
120 ms |
162984 KB |
Output is correct |
5 |
Correct |
119 ms |
163064 KB |
Output is correct |
6 |
Correct |
121 ms |
163140 KB |
Output is correct |
7 |
Correct |
120 ms |
162140 KB |
Output is correct |
8 |
Correct |
119 ms |
162168 KB |
Output is correct |
9 |
Correct |
118 ms |
161400 KB |
Output is correct |
10 |
Correct |
122 ms |
163036 KB |
Output is correct |
11 |
Correct |
120 ms |
163064 KB |
Output is correct |
12 |
Correct |
35 ms |
44024 KB |
Output is correct |
13 |
Correct |
58 ms |
77180 KB |
Output is correct |
14 |
Correct |
83 ms |
111336 KB |
Output is correct |
15 |
Correct |
121 ms |
163036 KB |
Output is correct |
16 |
Correct |
119 ms |
162936 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
376 KB |
Output is correct |
3 |
Correct |
2 ms |
256 KB |
Output is correct |
4 |
Correct |
2 ms |
376 KB |
Output is correct |
5 |
Correct |
2 ms |
504 KB |
Output is correct |
6 |
Correct |
2 ms |
504 KB |
Output is correct |
7 |
Correct |
2 ms |
376 KB |
Output is correct |
8 |
Correct |
2 ms |
504 KB |
Output is correct |
9 |
Correct |
2 ms |
504 KB |
Output is correct |
10 |
Correct |
2 ms |
632 KB |
Output is correct |
11 |
Incorrect |
2 ms |
508 KB |
Output isn't correct |
12 |
Halted |
0 ms |
0 KB |
- |