Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.82 KB | None | 0 0
  1. #include <fstream>
  2. #include <vector>
  3. using namespace std;
  4. ifstream fin("go.in");
  5. ofstream fout("go.out");
  6. const int NMAX=1005;
  7. int n,m,nr_zonei,x,y,nr,maxim,lm=1,cm=2,okish;
  8. int mat[NMAX][NMAX],matFill[NMAX][NMAX],d[NMAX*NMAX];
  9. int di[4]={-1,0,1,0},dj[4]={0,-1,0,1};
  10. bool viz[NMAX*NMAX];
  11. vector <int> lin[NMAX];
  12. vector <int> col[NMAX];
  13. bool inAfaraMatricei(int i,int j)
  14. {
  15.     if (i<1||j<1||i>n||j>m) return true;
  16.     return false;
  17. }
  18. bool ok(int i,int j)
  19. {
  20.     if (inAfaraMatricei(i,j)) return false;
  21.     if (matFill[i][j]) return false;
  22.     return true;
  23. }
  24. void algFill(int x,int y)
  25. {
  26.     int noul_i,noul_j;
  27.     matFill[x][y]=nr_zonei;
  28.     d[nr_zonei]++;
  29.     if (mat[x][y]==2)
  30.     {
  31.         lin[nr_zonei].push_back(x);
  32.         col[nr_zonei].push_back(y);
  33.     }
  34.     for (int i=0;i<4;i++)
  35.     {
  36.         noul_i=x+di[i];
  37.         noul_j=y+dj[i];
  38.         if (ok(noul_i,noul_j) && mat[x][y]==mat[noul_i][noul_j])
  39.             algFill(noul_i,noul_j);
  40.     }
  41. }
  42. int main()
  43. {
  44.     fin >> n >> m;
  45.     for (int i=1;i<=n;i++)
  46.     {
  47.         for (int j=1;j<=m;j++)
  48.         {
  49.             fin >> mat[i][j];
  50.         }
  51.     }
  52.     for (int i=1;i<=n;i++)
  53.     {
  54.         for (int j=1;j<=m;j++)
  55.         {
  56.             if(!matFill[i][j])
  57.             {
  58.                 nr_zonei++;
  59.                 algFill(i,j);
  60.             }
  61.         }
  62.     }
  63.     for (int i=1;i<=n;i++)
  64.     {
  65.         for (int j=1;j<=m;j++)
  66.         {
  67.             nr=0;
  68.             okish=1;
  69.             if (mat[i][j]==0)
  70.             {
  71.                 for (int p=0;p<4;p++)
  72.                 {
  73.                     x=i+di[p];
  74.                     y=j+dj[p];
  75.                     if (!inAfaraMatricei(x,y) && mat[x][y]==2)
  76.                     {
  77.                         if(viz[matFill[x][y]]==0)
  78.                         {
  79.                             nr+=d[matFill[x][y]];
  80.                         }
  81.                         viz[matFill[x][y]]=1;
  82.                     }
  83.                     for (int k=0;k<lin[matFill[x][y]].size();k++)
  84.                     {
  85.                         for (int dir=0;dir<4;dir++)
  86.                         {
  87.                             int xx=lin[matFill[x][y]][k]+di[dir];
  88.                             int yy=col[matFill[x][y]][k]+dj[dir];
  89.                             if (!inAfaraMatricei(xx,yy) && mat[xx][yy]==0)
  90.                             {
  91.                                 okish--;
  92.                                 if (okish==-1) break;
  93.                             }
  94.                         }
  95.                         if (okish==-1) break;
  96.                     }
  97.                     if (okish==-1) nr=0;
  98.                 }
  99.                 if (nr>maxim)
  100.                 {
  101.                     maxim=nr;
  102.                     lm=i;
  103.                     cm=j;
  104.                 }
  105.             }
  106.         }
  107.     }
  108.    fout << lm-1 << " " << cm-1;
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement