fm.cpp
/*
* File: fm.c
* Author: cteam025
*
* Created on October 19, 2013, 2:52 PM
*/
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
/*
*
*/
int ar, ac, tr, tc;
char texas[1000][1001];
int tiles[1000][1000];
int tilesR, tilesC;
int min(int a, int b){
if(a<b)return a;return b;
}
int main(int argc, char** argv) {
while(scanf("%d%d%d%d", &ar, &ac, &tr, &tc)==4){
int res=0, min=1000*1000+5;
for(int i=0;i<ar;i++){
scanf(" %s", texas+i);
}
tilesR = ar/tr + ((ar%tr)!=0)?1:0;
tilesC = ac/tc + ((ac%tc)!=0)?1:0;
for(int i=0;i<tr;i++){
for(int j=0;j<tc;j++){
for(int k=0;k<ar;k++){
for(int l=0;l<ac;l++){
if(texas[k][l]=='X'){
tiles[(i+k)/tr][(j+l)/tc]=1;
}
}
}
for(int k=0;k<ar;k++){
for(int l=0;l<ac;l++){
if(tiles[k][l]){
res++;
}
tiles[k][l]=0;
}
}
min = min(min, res);
res = 0;
}
}
}
printf("%d\n", min);
}
return (EXIT_SUCCESS);
}