pastebin

TANI
  1. #include <stdio.h>
  2. #include <string.h>
  3. int H,W;
  4. int a[1010][1010];
  5. int dp[1010][1010];
  6. int fl[1010][1010] = {};
  7. int FL[1010][1010] = {};
  8. int way[4][2] = {{-1,0},{1,0},{0,-1},{0,1}};
  9.  
  10.  
  11. int f(int x,int y){
  12.         dp[x][y]++;
  13.         fl[x][y]=1;
  14.         for(int i=0;i<4;i++) if(fl[x+way[i][0]][y+way[i][1]]==0&&a[x+way[i][0]][y+way[i][1]]>a[x][y]) f(x+way[i][0],y+way[i][1]);
  15.         //fl[x][y]=0;
  16.         return 0;
  17. }
  18.  
  19. int TANI(int x,int y){
  20.         for(int i=0;i<4;i++) if(a[x+way[i][0]][y+way[i][1]]<a[x][y]) return 0;
  21.         return 1;
  22. }
  23.  
  24. int main(void) {
  25.         scanf("%d%d",&H,&W);
  26.         for(int i=0;i<=H+1;i++){
  27.                 a[i][0] = 10000000;
  28.                 a[i][W+1] = 10000000;
  29.         }
  30.         for(int j=0;j<=W+1;j++){
  31.                 a[0][j] = 10000000;
  32.                 a[H+1][j] = 10000000;
  33.         }
  34.         for(int i=1;i<=H;i++) for(int j=1;j<=W;j++) scanf("%d",&a[i][j]);
  35.         //for(int i=0;i<=H+1;i++) for(int j=0;j<=W+1;j++) dp[i][j] = -1;
  36. //      int sum = 0;
  37.         for(int i=1;i<=H;i++){
  38.                 for(int j=1;j<=W;j++){
  39.                         if(TANI(i,j)==1) f(i,j);
  40.                         for(int i=1;i<=H;i++) for(int j=1;j<=W;j++) fl[i][j] = 0;
  41.                 }
  42.         }
  43.         int sum = 0;
  44.         for(int i=1;i<=H;i++) for(int j=1;j<=W;j++) if(dp[i][j]>=2) sum++;
  45.         printf("%d\n",sum);
  46.         /*for(int i=1;i<=H;i++){
  47.                 for(int j=1;j<=W;j++){
  48.                         printf("%3d",dp[i][j]);
  49.                 }
  50.                 printf("\n");
  51.         }*/
  52.         return 0;
  53. }
  54.  
Parsed in 0.009 seconds