# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
291986 | TAMREF | Acrobat (balkan16_acrobat) | C++11 | 0 ms | 256 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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);
}
}
컴파일 시 표준 에러 (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... |