# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
291986 | TAMREF | Acrobat (balkan16_acrobat) | C++11 | 0 ms | 256 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<cstdio>
#include<algorithm>
using namespace std;
int TC;
int n, w[5010], D[5010][3][4], cnt, TD[5010][3][4];
int main(){
int i, j, k, l, ii, X, Y;
int TC = 1;
while(TC--){
scanf("%d %d %d",&n,&X,&Y);
cnt = 0;
int ck[3] = {0};
for(i=1;i<=n;i++){
scanf("%d",&w[i]);
w[i] = (w[i] == X ? 0 : w[i] == Y ? 1 : 2);
ck[w[i]] = 1;
if(w[i] == 2)cnt++;
}
if(!ck[0] || !ck[1]){
printf("0\n");
continue;
}
if(ck[2] == 0){
printf("-1\n");
continue;
}
for(i=0;i<=cnt;i++){
for(j=0;j<3;j++)for(k=0;k<4;k++)D[i][j][k]=TD[i][j][k]=-1e9;
}
D[0][2][0] = 0;
for(i=1;i<=n;i++){
for(j=0;j<=cnt;j++){
for(k=0;k<3;k++){
for(ii=0;ii<4;ii++){
if(D[j][k][ii]<0)continue;
for(l=0;l<3;l++){
int t = (l+1)%3;
TD[j+1][l][ii | t] = max(TD[j+1][l][ii | t], D[j][k][ii]+1);
if((k!=2 && k==l) || (k==2 && k!=l)){
TD[j][l][ii | t] = max(TD[j][l][ii | t], D[j][k][ii]+(l==w[i]));
}
}
TD[j][k][ii] = max(TD[j][k][ii], D[j][k][ii]);
}
}
}
for(j=0;j<=cnt;j++){
for(k=0;k<3;k++){
for(l=0;l<4;l++){
D[j][k][l] = TD[j][k][l];
TD[j][k][l] = -1e9;
}
}
}
}
int res = 0;
for(i=cnt;i>=0;i--){
for(k=0;k<3;k++){
for(j=0;j<4;j++){
if(i==cnt && j!=3)continue;
res = max(res, D[i][k][j]);
}
}
}
printf("%d\n",n-res);
}
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |