Pagini recente » Cod sursa (job #1931666) | Cod sursa (job #2903714) | Cod sursa (job #2474598) | Cod sursa (job #1462528) | Cod sursa (job #554288)
Cod sursa(job #554288)
#include<fstream>
#include<algorithm>
#define DIM 50005
using namespace std;
long long st[DIM],dr[DIM];
int minx=50001,maxx,caractx[DIM],caracty[DIM],miny=50002,maxy,n,X,Y,x[DIM],y[DIM];
int solve(int v[],int caract[],int mini,int maxi,int d);
int main()
{
ifstream fin("tribute.in");
ofstream fout("tribute.out");
fin>>n>>X>>Y;
int i;
for(i=1;i<=n;i++)
{
fin>>x[i]>>y[i];
caractx[x[i]]++;
caracty[y[i]]++;
if(x[i]<minx)
minx=x[i];
if(x[i]>maxx)
maxx=x[i];
if(y[i]<miny)
miny=y[i];
if(y[i]>maxy)
maxy=y[i];
}
fout<<solve(x,caractx,minx,maxx,X)+solve(y,caracty,miny,maxy,Y);
}
int solve(int v[],int caract[],int mini,int maxi,int d)
{
int minn=3243543,i;
int el=0;
for(i=1;i<=maxi+1;i++)
st[i]=dr[i]=0;
for(i=mini;i<=maxi;i++)
if(i>=1)
st[i]=st[i-1]+el,
el+=caract[i];
else
el+=caract[i];
el=0;
for(i=maxi;i>=mini;i--)
dr[i]=dr[i+1]+el,
el+=caract[i];
if(mini+d<=maxi)
{
for(i=mini;i+d<=maxi;i++)
if(st[i]+dr[i+d]<minn)
minn=st[i]+dr[i+d];
}
else
minn=0;
return minn;
}