Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <vector>
- using namespace std;
- ifstream fin("go.in");
- ofstream fout("go.out");
- const int NMAX=1005;
- int n,m,nr_zonei,x,y,nr,maxim,lm=1,cm=2,okish;
- int mat[NMAX][NMAX],matFill[NMAX][NMAX],d[NMAX*NMAX];
- int di[4]={-1,0,1,0},dj[4]={0,-1,0,1};
- bool viz[NMAX*NMAX];
- vector <int> lin[NMAX];
- vector <int> col[NMAX];
- bool inAfaraMatricei(int i,int j)
- {
- if (i<1||j<1||i>n||j>m) return true;
- return false;
- }
- bool ok(int i,int j)
- {
- if (inAfaraMatricei(i,j)) return false;
- if (matFill[i][j]) return false;
- return true;
- }
- void algFill(int x,int y)
- {
- int noul_i,noul_j;
- matFill[x][y]=nr_zonei;
- d[nr_zonei]++;
- if (mat[x][y]==2)
- {
- lin[nr_zonei].push_back(x);
- col[nr_zonei].push_back(y);
- }
- for (int i=0;i<4;i++)
- {
- noul_i=x+di[i];
- noul_j=y+dj[i];
- if (ok(noul_i,noul_j) && mat[x][y]==mat[noul_i][noul_j])
- algFill(noul_i,noul_j);
- }
- }
- int main()
- {
- fin >> n >> m;
- for (int i=1;i<=n;i++)
- {
- for (int j=1;j<=m;j++)
- {
- fin >> mat[i][j];
- }
- }
- for (int i=1;i<=n;i++)
- {
- for (int j=1;j<=m;j++)
- {
- if(!matFill[i][j])
- {
- nr_zonei++;
- algFill(i,j);
- }
- }
- }
- for (int i=1;i<=n;i++)
- {
- for (int j=1;j<=m;j++)
- {
- nr=0;
- okish=1;
- if (mat[i][j]==0)
- {
- for (int p=0;p<4;p++)
- {
- x=i+di[p];
- y=j+dj[p];
- if (!inAfaraMatricei(x,y) && mat[x][y]==2)
- {
- if(viz[matFill[x][y]]==0)
- {
- nr+=d[matFill[x][y]];
- }
- viz[matFill[x][y]]=1;
- }
- for (int k=0;k<lin[matFill[x][y]].size();k++)
- {
- for (int dir=0;dir<4;dir++)
- {
- int xx=lin[matFill[x][y]][k]+di[dir];
- int yy=col[matFill[x][y]][k]+dj[dir];
- if (!inAfaraMatricei(xx,yy) && mat[xx][yy]==0)
- {
- okish--;
- if (okish==-1) break;
- }
- }
- if (okish==-1) break;
- }
- if (okish==-1) nr=0;
- }
- if (nr>maxim)
- {
- maxim=nr;
- lm=i;
- cm=j;
- }
- }
- }
- }
- fout << lm-1 << " " << cm-1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement