#include<cstdio>
#include<cstring>
#define MAX_N 120
#define MAX(x,y) ((x)>(y)?(x):(y))
int bit[MAX_N][MAX_N];
int n,m;
void add(int i,int j)
{
for(int k=i;k<=n;k+=k&-k)
for(int p=j;p<=m;p+=p&-p)
bit[k][p]+=1;
}
int sum(int i,int j)
{
int res=0;
for(int k=i;k>0;k-=k&-k)
for(int p=j;p>0;p-=p&-p)
res+=bit[k][p];
return res;
}
int main()
{
int q,res,i,j;
while(~scanf("%d",&q)&&q)
{
res=0;
int a,b,s,t;
memset(bit,0,sizeof(bit));
scanf("%d%d",&n,&m);
for( i=0;i<q;i++)
{
scanf("%d%d",&a,&b);
add(a,b);
}
scanf("%d%d",&s,&t);
for( i=1;i<=n-s+1;i++)
for( j=1;j<=m-t+1;j++)
{
res=MAX(res,sum(i+s-1,j+t-1)-sum(i+s-1,j-1)-sum(i-1,j+t-1)+sum(i-1,j-1));
}
printf("%d\n",res);
}
}
poj 2029 树状数组
最新推荐文章于 2020-10-28 19:13:52 发布