Pagini recente » Cod sursa (job #918089) | Cod sursa (job #2455904) | Cod sursa (job #473710) | Cod sursa (job #895361) | Cod sursa (job #110214)
Cod sursa(job #110214)
#include <cstdio>
#include <vector>
#define dim 50001
using namespace std;
int N;
int S;
int Dx, Dy;
int Mx, My;
int Cx[dim], Cy[dim];
vector < pair <int, int> > V;
void read()
{
freopen("tribute.in", "rt", stdin);
int i, x, y;
for(scanf("%d %d %d", &N, &Dx, &Dy), i=1; i<=N; ++i)
{
scanf("%d %d", &x, &y);
V.push_back(make_pair(x, y));
Mx = x > Mx ? x : Mx;
My = y > My ? y : My;
++ Cx[x];
++ Cy[y];
}
fclose(stdin);
}
void solve()
{
int i, s, st, dr, dx, dy;
for(i=s=dr=0; i<N; ++i)
if(V[i].first >= Dx)
{
s += V[i].first - Dx;
++ dr;
}
dx = s;
st = 0;
for(i=1; i<=Mx-Dx; ++i)
{
st += Cx[i-1];
dr -= Cx[i+Dx-1];
s += st;
s -= dr;
dx = s < dx ? s : dx;
}
for(i=s=dr=0; i<N; ++i)
if(V[i].second >= Dy)
{
s += V[i].second - Dy;
++ dr;
}
dy = s;
st = 0;
for(i=1; i<=My-Dy; ++i)
{
st += Cy[i-1];
dr -= Cy[i+Dy-1];
s += st;
s -= dr;
dy = s < dy ? s : dy;
}
S = dx + dy;
}
void write()
{
freopen("tribute.out", "wt", stdout);
printf("%d", S);
fclose(stdout);
}
int main()
{
read();
solve();
write();
return 0;
}