Advertisement
nicuvlad76

Untitled

Nov 21st, 2020
923
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.41 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define N 25
  3. using namespace std;
  4. ifstream fin("immortal.in");
  5. ofstream fout("immortal.out");
  6.  
  7. struct batalie
  8. {
  9.     int xs,ys, xf, yf;
  10. }vec[N*N];
  11. int n, m,k;
  12. bool A[N][N];
  13. int dx[]={-1,1,0,0};
  14. int dy[]={0,0,-1,1};
  15.  
  16. void Citire()
  17. {
  18.     int x,y;
  19.    fin>>n>>m>>k;
  20.     for(int i=1;i<=k;i++)
  21.     {
  22.         fin>>x>>y;
  23.         A[x][y]=1;
  24.     }
  25. }
  26. void Afisare()
  27. {
  28.     for(int i=1;i<=k-1;i++)
  29.         fout<<vec[i].xs<<' '<<vec[i].ys<<' '<<vec[i].xf<<' '<<vec[i].yf<<'\n';
  30. }
  31. bool Inside(int i, int j)
  32. {
  33.     return i>=1 && i<=n &&j>=1&&j<=m;
  34. }
  35. void Back(int key)
  36. {
  37.     int x,y, l,c;
  38.     for(int i=1;i<=n;i++)
  39.         for(int j=1;j<=m;j++)
  40.         if(A[i][j])
  41.     {
  42.        for(int d=0;d<4;d++)
  43.        {
  44.            x=i+dx[d];
  45.            y=j+dy[d];
  46.            if(A[x][y]) ///avem un nemu
  47.            {
  48.               l=x+dx[d] ;
  49.               c=y+dy[d];
  50.               if(Inside(l,c)&&A[l][c]==0)
  51.               {
  52.                   A[i][j]=0; A[x][y]=0;
  53.                   A[l][c]=1;
  54.                   ///
  55.                   vec[key].xs=i; vec[key].ys=j;
  56.                   vec[key].xf=l; vec[key].yf=c;
  57.  
  58.                   if(key==k-1) {Afisare(); exit(0);}
  59.                   else Back(key+1);
  60.  
  61.                   A[i][j]=1; A[x][y]=1;
  62.                   A[l][c]=0;
  63.               }
  64.            }
  65.        }
  66.     }
  67. }
  68. int main()
  69. {
  70.     Citire();
  71.     Back(1);
  72.     return 0;
  73. }
  74.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement