Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<fstream>
- #include<iostream>
- #include<cstring>
- using namespace std;
- fstream fin("ferma.in",ios::in),fout("ferma.out",ios::out);
- char a[402][402];
- int n,m,Aux[402][402],ap[400*400+2],s[5];
- int di[]= {-1, 1, 0, 0};
- int dj[]= {0, 0, 1, -1};
- char dir[]="NSEV";
- void Fill(int i,int j, int id)
- {
- int d;
- ap[id]++;
- Aux[i][j]=id;
- for(d=0; d<=3; d++)
- {
- if(a[i+di[d]][j+dj[d]]==a[i][j] && Aux[i+di[d]][j+dj[d]]==0)
- {
- Fill(i+di[d],j+dj[d],id);
- }
- }
- }
- int main()
- {
- int i,j,id=0,p,maxim=0,imax=0,jmax=0,k,l;
- char cmax=0;
- memset(a,'-',sizeof(a));
- fin>>p>>n>>m;
- for(i=1; i<=n; i++)
- {
- for(j=1; j<=m; j++)
- {
- fin>>a[i][j];
- }
- }
- for(i=1; i<=n; i++)
- {
- for(j=1; j<=m; j++)
- {
- if(Aux[i][j]==0)
- {
- id++;
- Fill(i,j,id);
- maxim=max(ap[id],maxim);
- }
- }
- }
- if(p==1)
- {
- fout<<maxim;
- }
- else
- {
- maxim=0;
- for(i=1; i<=n; i++)
- {
- for(j=1; j<=m; j++)
- {
- if(a[i][j]==a[i-1][j] && a[i][j]==a[i+1][j] && a[i][j]==a[i][j-1] && a[i][j]==a[i][j+1])
- {
- continue;
- }
- s[0]=ap[Aux[i-1][j]];//sus
- s[1]=ap[Aux[i+1][j]];//jos
- s[2]=ap[Aux[i][j+1]];//dr
- s[3]=ap[Aux[i][j-1]];//st
- for(k=0; k<4; k++)
- {
- for(l=k+1; l<4; l++)
- {
- if(Aux[i+di[k]][j+dj[k]]==Aux[i+di[l]][j+dj[l]])
- {
- s[l]=0;
- }
- }
- }
- for(k=0; k<4; k++)
- {
- for(l=k+1; l<4; l++)
- {
- if(a[i+di[k]][j+dj[k]]==a[i+di[l]][j+dj[l]] && Aux[i+di[k]][j+dj[k]]!=Aux[i+di[l]][j+dj[l]])
- {
- s[k]+=s[l];
- s[l]=0;
- }
- }
- if(a[i+di[k]][j+dj[k]]!=a[i][j])
- {
- s[k]++;
- }
- if(maxim<s[k])
- {
- imax=i;
- jmax=j;
- cmax=a[i+di[k]][j+dj[k]];
- maxim=s[k];
- }
- }
- }
- }
- fout<<imax<<" "<<jmax<<"\n"<<cmax;
- }
- fin.close();
- fout.close();
- return 0;
- }
Add Comment
Please, Sign In to add comment