Guest User

Untitled

a guest
Jan 23rd, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.86 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int n,m;
  6. char lab[1000][1000];
  7.  
  8. void svet_go (int i, int j, int di, int dj)
  9. {
  10.     int curi=0, curj=0;
  11.     if ((!((lab[i+di][j]=='*')&&(lab[i][dj+j]=='*'))) && (((i+di>-1) && (i+di<n))|((j+dj>-1) && (j+dj<m))))
  12.         {
  13.             if ((i+di>-1) && (i+di<n)) curi=i+di; else {curi=i; di=-di; }
  14.             if ((j+dj>-1) && (j+dj<m)) curj=j+dj; else {curj=j; dj=-dj; }
  15.             if ((lab[curi][curj]!='*') && (lab[curi][curj]!='X'))
  16.                 {
  17.                     if ((di*dj>0) && (lab[curi][curj]=='.')) lab[curi][curj]='\\';
  18.                     if ((di*dj>0) && (lab[curi][curj]=='/')) lab[curi][curj]='X';
  19.                     if ((di*dj<0) && (lab[curi][curj]=='.')) lab[curi][curj]='/';
  20.                     if ((di*dj<0) && (lab[curi][curj]='\\')) lab[curi][curj]='X';
  21.                     svet_go(curi, curj, di, dj);
  22.                 }
  23.             if (lab[curi][curj]=='*') {
  24.                               if ((lab[curi-di][curj]=='*')  && (lab[curi][curj-dj]!='*'))
  25.                                   {
  26.                                   curj=curj-dj;
  27.                                   dj=-dj;
  28.                                   if ((di*dj>0) && (lab[curi][curj]=='.')) lab[curi][curj]='\\';
  29.                                   if ((di*dj>0) && (lab[curi][curj]=='/')) lab[curi][curj]='X';
  30.                                   if ((di*dj<0) && (lab[curi][curj]=='.')) lab[curi][curj]='/';
  31.                                   if ((di*dj<0) && (lab[curi][curj]=='\\')) lab[curi][curj]='X';
  32.                                   svet_go(curi, curj, di, dj);
  33.                                   }
  34.                               if ((lab[curi-di][curj]!='*') && (lab[curi][curj-dj]='*'))
  35.                                   {
  36.                                   curi=curi-di;
  37.                                   di=-di;
  38.                                   if ((di*dj>0) && (lab[curi][curj]=='.')) lab[curi][curj]='\\';
  39.                                   if ((di*dj>0) && (lab[curi][curj]=='/')) lab[curi][curj]='X';
  40.                                   if ((di*dj<0) && (lab[curi][curj]=='.')) lab[curi][curj]='/';
  41.                                   if ((di*dj<0) && (lab[curi][curj]=='\\')) lab[curi][curj]='X';
  42.                                   svet_go(curi, curj, di, dj);
  43.                                   }
  44.             }
  45.         }
  46. }
  47.  
  48. int main()
  49. {
  50.     int i,j,sveti,svetj;
  51.     cin>>n>>m;
  52.     for (i=0; i!=n; ++i)
  53.         for (j=0; j!=m; ++j)
  54.         {
  55.             cin>>lab[i][j];
  56.             if (lab[i][j]=='X')
  57.                 {
  58.                     sveti=i;
  59.                     svetj=j;
  60.                 }
  61.         }
  62.     svet_go(sveti,svetj,1,1);
  63.     svet_go(sveti,svetj,1,-1);
  64.     svet_go(sveti,svetj,-1,1);
  65.     svet_go(sveti,svetj,-1,-1);
  66.  
  67.     for (i=0; i!=n; ++i)
  68.         {for (j=0; j!=m; ++j) cout<<lab[i][j]; cout<<endl;}
  69. }
Add Comment
Please, Sign In to add comment