Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<cstdio>
- #include<string.h>
- struct nem{
- int x,y;
- };
- nem sol[2][15],nemuritori[15];
- int n,m,i,t[21][21];
- bool ok;
- void cit(){
- int k,q,j;
- scanf("%d %d %d",&n,&m,&i);
- for(k=0;k<21;k++)
- t[k][0]=t[0][k]=t[n+1][k]=t[k][m+1]=2;
- k=0;
- while(scanf("%d %d",&q,&j) != EOF){
- nemuritori[k].x=q;
- nemuritori[k].y=j;
- k++;
- t[q][j]=1;
- }
- }
- void bkt(int x,int y,int c){
- if(c==i-1){
- ok=1;
- for(int j=0;j<i-1;j++)
- printf("%d %d %d %d\n",sol[0][j].x,sol[0][j].y,sol[1][j].x,sol[1][j].y);
- }
- else{
- int j,k,a[3]={0,1,-1};
- for(j=0;j<3 && !ok;j++)
- for(k=0;k<3 && !ok;k++)
- if((!j || !k) && j!=k)
- if(t[x+a[j]][y+a[k]] == 1){
- if(!t[x+2*a[j]][y+2*a[k]]){
- t[x+2*a[j]][y+2*a[k]]=1;
- t[x][y]=t[x+a[j]][y+a[k]]=0;
- sol[0][c].x=x; sol[0][c].y=y;
- sol[1][c].x=x+2*a[j]; sol[1][c].y=y+2*a[k];
- bkt(x+2*a[j],y+2*a[k],c+1);
- t[x+2*a[j]][y+2*a[k]]=0;
- t[x][y]=t[x+a[j]][y+a[k]]=1;
- }
- if(!t[x-a[j]][y-a[k]] && !ok){
- t[x-a[j]][y-a[k]]=1;
- t[x][y]=t[x+a[j]][y+a[k]]=0;
- sol[0][c].x=x+a[j]; sol[0][c].y=y+a[k];
- sol[1][c].x=x-a[j]; sol[1][c].y=y-a[k];
- bkt(x-a[j],y-a[k],c+1);
- t[x-a[j]][y-a[k]]=0;
- t[x][y]=t[x+a[j]][y+a[k]]=1;
- }
- }
- }
- }
- int main(){
- freopen("immortal.in","r",stdin);
- freopen("immortal.out","w",stdout);
- cit();
- for(int k=0;k<i && !ok;k++)
- bkt(nemuritori[k].x,nemuritori[k].y,0);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement