Advertisement
Guest User

Untitled

a guest
Mar 1st, 2012
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.50 KB | None | 0 0
  1. #include<cstdio>
  2. #include<string.h>
  3.  
  4. struct nem{
  5.     int x,y;
  6. };
  7.  
  8. nem sol[2][15],nemuritori[15];
  9. int n,m,i,t[21][21];
  10. bool ok;
  11.  
  12. void cit(){
  13.     int k,q,j;
  14.  
  15.     scanf("%d %d %d",&n,&m,&i);
  16.  
  17.     for(k=0;k<21;k++)
  18.         t[k][0]=t[0][k]=t[n+1][k]=t[k][m+1]=2;
  19.  
  20.     k=0;
  21.     while(scanf("%d %d",&q,&j) != EOF){
  22.         nemuritori[k].x=q;
  23.         nemuritori[k].y=j;
  24.         k++;
  25.         t[q][j]=1;
  26.     }
  27. }
  28.  
  29. void bkt(int x,int y,int c){
  30.     if(c==i-1){
  31.         ok=1;
  32.         for(int j=0;j<i-1;j++)
  33.             printf("%d %d %d %d\n",sol[0][j].x,sol[0][j].y,sol[1][j].x,sol[1][j].y);
  34.     }
  35.        
  36.     else{
  37.         int j,k,a[3]={0,1,-1};
  38.  
  39.         for(j=0;j<3 && !ok;j++)
  40.             for(k=0;k<3 && !ok;k++)
  41.                 if((!j || !k) && j!=k)
  42.                     if(t[x+a[j]][y+a[k]] == 1){
  43.                         if(!t[x+2*a[j]][y+2*a[k]]){
  44.                             t[x+2*a[j]][y+2*a[k]]=1;
  45.                             t[x][y]=t[x+a[j]][y+a[k]]=0;
  46.                            
  47.                             sol[0][c].x=x;  sol[0][c].y=y;
  48.                             sol[1][c].x=x+2*a[j];   sol[1][c].y=y+2*a[k];
  49.  
  50.                             bkt(x+2*a[j],y+2*a[k],c+1);
  51.  
  52.                             t[x+2*a[j]][y+2*a[k]]=0;
  53.                             t[x][y]=t[x+a[j]][y+a[k]]=1;
  54.                         }
  55.  
  56.                         if(!t[x-a[j]][y-a[k]] && !ok){
  57.                             t[x-a[j]][y-a[k]]=1;
  58.                             t[x][y]=t[x+a[j]][y+a[k]]=0;
  59.  
  60.                             sol[0][c].x=x+a[j]; sol[0][c].y=y+a[k];
  61.                             sol[1][c].x=x-a[j]; sol[1][c].y=y-a[k];
  62.  
  63.                             bkt(x-a[j],y-a[k],c+1);
  64.  
  65.                             t[x-a[j]][y-a[k]]=0;
  66.                             t[x][y]=t[x+a[j]][y+a[k]]=1;
  67.                         }
  68.                     }
  69.     }
  70. }
  71.  
  72. int main(){
  73.     freopen("immortal.in","r",stdin);
  74.     freopen("immortal.out","w",stdout);
  75.     cit();
  76.     for(int k=0;k<i && !ok;k++)
  77.         bkt(nemuritori[k].x,nemuritori[k].y,0);
  78.     return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement