Submission #101480

#TimeUsernameProblemLanguageResultExecution timeMemory
101480daniel920712Combo (IOI18_combo)C++14
0 / 100
2 ms280 KiB
#include <string> #include <stdio.h> #include <iostream> #include "combo.h" using namespace std; string all; string aaa; bool have[4]={0}; bool can[5][2005]={0}; char change[4]={'A','B','X','Y'}; string guess_sequence(int N) { int con=0,i,j,k,t,x=0,a,b; for(i=0;i<N;i++) { t=0; con=0; for(j=0;j<4;j++) { if(i==1&&change[j]==all[0]) for(k=i;k<N;k++) can[j][k]=1; t+=(1-can[j][i]); } for(j=0;j<4;j++) { if(can[j][i]) continue; con=0; if(con+1==t) all+=change[j]; else { con++; a=-1; b=-1; for(k=0;k<4;k++) { if(can[k][i+1]) continue; if(a==-1&&(i||j!=k)) a=k; else if(b==-1&&(i||j!=k)) b=k; } //printf("%d %d\n",a,b); aaa=all; aaa+=change[j]; aaa+=change[a]; aaa+=all; aaa+=change[j]; aaa+=change[b]; x=press(aaa); //printf("a:%d %d\n",x,i); if(x==i+1) { all+=change[j]; if(i!=N-1) for(k=b+1;k<4;k++) if(!can[k][i+1]) all+=change[k]; i++; break; } else if(x==i+2) { all+=change[j]; for(k=b+1;k<4;k++) if(!can[k][i]) can[k][i+1]=1; break; } } } //std::cout<<i<<" "<<all<<'\n'; } return all; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...