Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- using namespace std;
- int dlin[]={-1,0,1,0},dcol[]={0,1,0,-1},n,m,s,a[60][60],b[60][60],u[101],maxim,maxim_c,k;
- void Citire()
- {
- ifstream f("gradina1.in");
- f>>n>>m>>s;
- for(int i=1;i<=n;++i)
- for(int j=1;j<=m;++j)
- f>>a[i][j];
- for(int i=1;i<=s;++i)
- f>>u[i];
- for(int i=1;i<=n;++i)
- for(int j=1;j<=m;++j)
- f>>b[i][j];
- f.close();
- }
- void Bordare()
- {
- for(int i=0;i<=m+1;++i)
- a[0][i]=a[n+1][i]=200;
- for(int i=1;i<=n;++i)
- a[i][0]=a[i][m+1]=200;
- }
- void Umplere(int l,int c)
- {
- for(int i=0;i<4;++i)
- if(a[l+dlin[i]][c+dcol[i]]==k)
- ++maxim_c,a[l+dlin[i]][c+dcol[i]]=200,Umplere(l+dlin[i],c+dcol[i]);
- else
- if(a[l+dlin[i]][c+dcol[i]]!=-k&&a[l+dlin[i]][c+dcol[i]]<=0&&b[l+dlin[i]][c+dcol[i]]>=u[k])
- ++maxim_c,a[l+dlin[i]][c+dcol[i]]=-k,Umplere(l+dlin[i],c+dcol[i]);
- }
- int main ()
- {
- Citire();
- Bordare();
- for(int l=1;l<=n;++l)
- for(int c=1;c<=m;++c)
- if(a[l][c]>=1&&a[l][c]<=s)
- {
- maxim_c=1;
- k=a[l][c];
- a[l][c]=200;
- Umplere(l,c);
- if(maxim_c>maxim)
- maxim=maxim_c;
- }
- ofstream g("gradina1.out");
- g<<maxim<<'\n';
- g.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement