CPP   67
answer water
Guest on 11th September 2023 07:43:36 AM


  1. #include<stdio.h>
  2. int water(int,int);
  3. int lake[500][500];
  4. int answer[800000];
  5. int main(){
  6.     int M,N;
  7.     int a,b;
  8.     int ans;
  9.     int i,j,k=0;
  10.     int m,n,hold;
  11.     int z;
  12.     scanf("%d%d", &M, &N);
  13.     for(a=1;a<=M;a++)
  14.         for(b=1;b<=N;b++){
  15.                 scanf("%d", &lake[a][b]);
  16.         }
  17.     for(i=1;i<=M;i++)
  18.         for(j=1;j<=N;j++){
  19.             answer[k]=water(i,j);
  20.             k=k+1;
  21.         }
  22.    
  23.     for(m=0;m<=k;m++)
  24.         for(n=0;n<=k;n++){
  25.             if(answer[n]<answer[n+1]){
  26.                 hold=answer[n];
  27.                 answer[n]=answer[n+1];
  28.                 answer[n+1]=hold;
  29.             }
  30.         }
  31.     for(z=0;z<=k;z++)
  32.         if(answer[z]>0)
  33.             printf("%d\n",answer[z]);
  34.    
  35.     return 0;
  36. }
  37. int water(int X, int Y){
  38.     int sum=0;
  39.     if(lake[X][Y]==0)
  40.         return 0;
  41.     if(lake[X][Y]!=0){
  42.         sum=sum+1;
  43.         lake[X][Y]=0;
  44.         sum=sum+water(X+1,Y)+water(X,Y-1)+water(X-1,Y)+water(X,Y+1);
  45.         return sum;
  46.     }        
  47. }

Raw Paste

Login or Register to edit or fork this paste. It's free.