提交时间:2024-03-14 20:15:55

运行 ID: 138266

#include<bits/stdc++.h> using namespace std; bool flag,pd; int n,c,o,a[105],k[105]; //a=当前状态,k=条件 int main(){ memset(k,4,sizeof(k)); scanf("%d%d",&n,&c); scanf("%d",&o); while(o!=-1) k[o]=1,scanf("%d",&o); scanf("%d",&o); while(o!=-1) k[o]=0,scanf("%d",&o); for(register int i=1;i<=n;i++) a[i]=1; if(!c){ for(register int i=1;i<=n;i++) if(a[i]!=k[i]&&k[i]<3) puts("IMPOSSIBLE"),exit(0); for(register int i=1;i<=n;i++) printf("%d",a[i]);return 0; } if(c==1){ flag=1; for(register int i=1;i<=n;i++){ a[i]^=1; if(a[i]!=k[i]&&k[i]<3){flag=0;break;} } if(flag){for(register int i=1;i<=n;i++) printf("%d",a[i]);puts("");pd=true;} flag=1; for(register int i=1;i<=n;i++) a[i]=1; for(register int i=1;i<=n;i++){ if(i%2==1)a[i]^=1; if(a[i]!=k[i]&&k[i]<3){flag=0;break;} } if(flag){for(register int i=1;i<=n;i++) printf("%d",a[i]);puts("");pd=true;} flag=1; for(register int i=1;i<=n;i++) a[i]=1; for(register int i=1;i<=n;i++){ if(i%3==1)a[i]^=1; if(a[i]!=k[i]&&k[i]<3){flag=0;break;} } if(flag){for(register int i=1;i<=n;i++) printf("%d",a[i]);puts("");pd=true;} flag=1; for(register int i=1;i<=n;i++) a[i]=1; for(register int i=1;i<=n;i++){ if(i%2==0)a[i]^=1; if(a[i]!=k[i]&&k[i]<3){flag=0;break;} } if(flag){for(register int i=1;i<=n;i++) printf("%d",a[i]);puts("");pd=true;} if(!pd) puts("IMPOSSIBLE");return 0; } if(c==2){ flag=1; for(register int i=1;i<=n;i++) a[i]=1; for(register int i=1;i<=n;i++) if(i%2==0)a[i]^=1; for(register int i=1;i<=n;i++){ if(i%2==1)a[i]^=1; if(a[i]!=k[i]&&k[i]<3){flag=0;break;} } if(flag){for(register int i=1;i<=n;i++) printf("%d",a[i]);puts("");pd=true;} flag=1; for(register int i=1;i<=n;i++) a[i]=1; for(register int i=1;i<=n;i++) if(i%2==0)a[i]^=1; for(register int i=1;i<=n;i++){ if(i%3==1)a[i]^=1; if(a[i]!=k[i]&&k[i]<3){flag=0;break;} } if(flag){for(register int i=1;i<=n;i++) printf("%d",a[i]);puts("");pd=true;} flag=1; for(register int i=1;i<=n;i++) a[i]=1; for(register int i=1;i<=n;i++) a[i]^=1; for(register int i=1;i<=n;i++){ if(i%2==0)a[i]^=1; if(a[i]!=k[i]&&k[i]<3){flag=0;break;} } if(flag){for(register int i=1;i<=n;i++) printf("%d",a[i]);puts("");pd=true;} flag=1; for(register int i=1;i<=n;i++) a[i]=1; for(register int i=1;i<=n;i++) a[i]^=1; for(register int i=1;i<=n;i++){ if(i%3==1)a[i]^=1; if(a[i]!=k[i]&&k[i]<3){flag=0;break;} } if(flag){for(register int i=1;i<=n;i++) printf("%d",a[i]);puts("");pd=true;} flag=1; for(register int i=1;i<=n;i++) a[i]=1; for(register int i=1;i<=n;i++) a[i]^=1; for(register int i=1;i<=n;i++){ if(i%2==1)a[i]^=1; if(a[i]!=k[i]&&k[i]<3){flag=0;break;} } if(flag){for(register int i=1;i<=n;i++) printf("%d",a[i]);puts("");pd=true;} flag=1; for(register int i=1;i<=n;i++) a[i]=1; for(register int i=1;i<=n;i++) if(i%2==1)a[i]^=1; for(register int i=1;i<=n;i++){ if(i%3==1)a[i]^=1; if(a[i]!=k[i]&&k[i]<3){flag=0;break;} } if(flag){for(register int i=1;i<=n;i++) printf("%d",a[i]);puts("");pd=true;} flag=1; for(register int i=1;i<=n;i++) a[i]=1; for(register int i=1;i<=n;i++) if(a[i]!=k[i]&&k[i]<3){flag=0;break;} if(flag){for(register int i=1;i<=n;i++) printf("%d",a[i]);puts("");pd=true;} if(!pd) puts("IMPOSSIBLE");return 0; } if(c&1){ flag=1; for(register int i=1;i<=n;i++){ a[i]^=1; if(a[i]!=k[i]&&k[i]<3){flag=0;break;} } if(flag){for(register int i=1;i<=n;i++) printf("%d",a[i]);puts("");pd=true;} flag=1; for(register int i=1;i<=n;i++) a[i]=1; for(register int i=1;i<=n;i++) a[i]^=1; for(register int i=1;i<=n;i++) if(i%2==1)a[i]^=1; for(register int i=1;i<=n;i++){ if(i%3==1)a[i]^=1; if(a[i]!=k[i]&&k[i]<3){flag=0;break;} } if(flag){for(register int i=1;i<=n;i++) printf("%d",a[i]);puts("");pd=true;} flag=1; for(register int i=1;i<=n;i++) a[i]=1; for(register int i=1;i<=n;i++){ if(i%2==1)a[i]^=1; if(a[i]!=k[i]&&k[i]<3){flag=0;break;} } if(flag){for(register int i=1;i<=n;i++) printf("%d",a[i]);puts("");pd=true;} flag=1; for(register int i=1;i<=n;i++) a[i]=1; for(register int i=1;i<=n;i++){ if(i%3==1)a[i]^=1; if(a[i]!=k[i]&&k[i]<3){flag=0;break;} } if(flag){for(register int i=1;i<=n;i++) printf("%d",a[i]);puts("");pd=true;} flag=1; for(register int i=1;i<=n;i++) a[i]=1; for(register int i=1;i<=n;i++) if(i%2==0)a[i]^=1; for(register int i=1;i<=n;i++) if(i%2==1)a[i]^=1; for(register int i=1;i<=n;i++){ if(i%3==1)a[i]^=1; if(a[i]!=k[i]&&k[i]<3){flag=0;break;} } if(flag){for(register int i=1;i<=n;i++) printf("%d",a[i]);puts("");pd=true;} flag=1; for(register int i=1;i<=n;i++) a[i]=1; for(register int i=1;i<=n;i++){ if(i%2==0)a[i]^=1; if(a[i]!=k[i]&&k[i]<3){flag=0;break;} } if(flag){for(register int i=1;i<=n;i++) printf("%d",a[i]);puts("");pd=true;} flag=1; for(register int i=1;i<=n;i++) a[i]=1; for(register int i=1;i<=n;i++) a[i]^=1; for(register int i=1;i<=n;i++) if(i%2==0)a[i]^=1; for(register int i=1;i<=n;i++){ if(i%3==1)a[i]^=1; if(a[i]!=k[i]&&k[i]<3){flag=0;break;} } if(flag){for(register int i=1;i<=n;i++) printf("%d",a[i]);puts("");pd=true;} flag=1; for(register int i=1;i<=n;i++) a[i]=1; for(register int i=1;i<=n;i++) if(a[i]!=k[i]&&k[i]<3){flag=0;break;} if(flag){for(register int i=1;i<=n;i++) printf("%d",a[i]);puts("");pd=true;} if(!pd) puts("IMPOSSIBLE");return 0; } else{ flag=1; for(register int i=1;i<=n;i++) a[i]=1; for(register int i=1;i<=n;i++) if(i%2==0)a[i]^=1; for(register int i=1;i<=n;i++){ if(i%2==1)a[i]^=1; if(a[i]!=k[i]&&k[i]<3){flag=0;break;} } if(flag){for(register int i=1;i<=n;i++) printf("%d",a[i]);puts("");pd=true;} flag=1; for(register int i=1;i<=n;i++) a[i]=1; for(register int i=1;i<=n;i++) if(i%2==0)a[i]^=1; for(register int i=1;i<=n;i++){ if(i%3==1)a[i]^=1; if(a[i]!=k[i]&&k[i]<3){flag=0;break;} } if(flag){for(register int i=1;i<=n;i++) printf("%d",a[i]);puts("");pd=true;} flag=1; for(register int i=1;i<=n;i++) a[i]=1; for(register int i=1;i<=n;i++) a[i]^=1; for(register int i=1;i<=n;i++){ if(i%2==0)a[i]^=1; if(a[i]!=k[i]&&k[i]<3){flag=0;break;} } if(flag){for(register int i=1;i<=n;i++) printf("%d",a[i]);puts("");pd=true;} flag=1; for(register int i=1;i<=n;i++) a[i]=1; for(register int i=1;i<=n;i++){ if(i%3==1)a[i]^=1; if(a[i]!=k[i]&&k[i]<3){flag=0;break;} } if(flag){for(register int i=1;i<=n;i++) printf("%d",a[i]);puts("");pd=true;} flag=1; for(register int i=1;i<=n;i++) a[i]=1; for(register int i=1;i<=n;i++) a[i]^=1; for(register int i=1;i<=n;i++){ if(i%3==1)a[i]^=1; if(a[i]!=k[i]&&k[i]<3){flag=0;break;} } if(flag){for(register int i=1;i<=n;i++) printf("%d",a[i]);puts("");pd=true;} flag=1; for(register int i=1;i<=n;i++) a[i]=1; for(register int i=1;i<=n;i++) a[i]^=1; for(register int i=1;i<=n;i++){ if(i%2==1)a[i]^=1; if(a[i]!=k[i]&&k[i]<3){flag=0;break;} } if(flag){for(register int i=1;i<=n;i++) printf("%d",a[i]);puts("");pd=true;} flag=1; for(register int i=1;i<=n;i++) a[i]=1; for(register int i=1;i<=n;i++) if(i%2==1)a[i]^=1; for(register int i=1;i<=n;i++){ if(i%3==1)a[i]^=1; if(a[i]!=k[i]&&k[i]<3){flag=0;break;} } if(flag){for(register int i=1;i<=n;i++) printf("%d",a[i]);puts("");pd=true;} flag=1; for(register int i=1;i<=n;i++) a[i]=1; for(register int i=1;i<=n;i++) if(a[i]!=k[i]&&k[i]<3){flag=0;break;} if(flag){for(register int i=1;i<=n;i++) printf("%d",a[i]);puts("");pd=true;} if(!pd) puts("IMPOSSIBLE");return 0; } return 0; }