トップ 一覧 Farm 検索 ヘルプ RSS ログイン

2003db1.cの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
 // 2003 domestic B
 // 作成 2004.6.23
 
 #include <stdio.h>
 
 #define XX 500
 #define YY 500
 
 void print(short map[XX][YY],int xx,int yy);
 
 int main(void)
 {
 	int i, j, s, t, x, y, w, h;
 	int kaki, max, sum;
 	short map[XX][YY];
 	
 	while(1){
 		scanf("%d", &kaki);
 //		printf("kaki=%d\n",kaki);
 		if(kaki==0){
 			break;
 		}
 		
 		// マップをクリア
 		for(y=0; y<YY; y++){
 			for(x=0; x<XX; x++){
 				map[x][y]=0;
 			}
 		}
 		
 		// マップのサイズ
 		scanf("%d %d", &w, &h);
 //		printf("w=%d h=%d\n",w,h);
 		
 		// 柿の木の座標読み込み
 		for(i=0; i<kaki; i++){
 			scanf("%d %d", &x, &y);
 			map[x-1][y-1]=1;
 		}
 //		print(map,w,h);
 		
 		// 囲む長方形のサイズ
 		scanf("%d %d", &s, &t);
 //		printf("s=%d t=%d\n",s,t);
 		
 		// しらみつぶしに調べる
 		max=0;
 		for(y=0; y<h; y++){
 			for(x=0; x<w; x++){
 				sum=0;
 				for(j=0; j<t; j++){
 					for(i=0; i<s; i++){
 						sum+=map[x+i][y+j]; // 長方形の中の柿の木の数
 					}
 				}
 				if(max<sum){
 					max=sum; // 最大値を求める
 				}
 			}
 		}
 		printf("%d\n",max);
 	}
 	return 0;
 }
 
 void print(short map[XX][YY],int xx,int yy)
 {
 	int x,y;
 	
 	for(y=0; y<yy; y++){
 		for(x=0; x<xx; x++){
 			printf("%d",map[x][y]);
 		}
 		printf("\n");
 	}
 }
 }