直接枚举就可以水过.
#include <iostream>
#include <memory.h>
#include <cstdio>
using namespace std;
const int maxn = 101;
bool grid[maxn][maxn];
int N, n, m;
int main(){
while(scanf("%d", &N) && N){
scanf("%d %d", &m, &n);
memset(grid, 0, sizeof(grid));
while(N--){
int x, y;
scanf("%d %d", &y, &x);
grid[x-1][y-1] = 1;
}
int s, t, ans = 0;
scanf("%d %d", &t, &s);
for(int i = 0; i <= n - s; ++i){
for(int j = 0; j <= m - t; ++j){
int maxv = 0;
for(int k = i; k < i + s; ++k){
for(int m = j; m < j + t; ++m){
maxv +=grid[k][m];
}
}
if(maxv > ans)ans = maxv;
}
}
printf("%d\n",ans);
}
return 0;
}