Pagini recente » Cod sursa (job #3325730) | Cod sursa (job #3321593) | Cod sursa (job #3327774) | Cod sursa (job #3350007) | Cod sursa (job #3338631)
#include <fstream>
using namespace std;
ifstream fin("tribute.in");
ofstream fout("tribute.out");
int xcoord[50005];
int ycoord[50005];
int n,dx,dy;
void read()
{
fin >> n >> dx >> dy;
for(int i = 0; i < n; ++i){
int x,y;
fin >> x >> y;
++xcoord[x];
++ycoord[y];
}
}
int findxdist()
{
int nl = 0, nr = 0, sum = 0;
for(int i = dx + 1; i <= 50000; ++i){
if(xcoord[i] > 0){
sum += xcoord[i] * (i - dx);
nr += xcoord[i];
}
}
int minSum = sum;
for(int i = dx + 1; i <= 50000; ++i){
sum += nl;
sum -= nr;
if(xcoord[i - dx - 1] > 0){
nl += xcoord[i - dx - 1];
sum += xcoord[i - dx - 1];
}
if(xcoord[i] > 0){
nr -= xcoord[i];
}
if(sum < minSum){
minSum = sum;
}
}
return minSum;
}
int findydist()
{
int nl = 0, nr = 0, sum = 0;
for(int i = dy + 1; i <= 50000; ++i){
if(ycoord[i] > 0){
sum += ycoord[i] * (i - dy);
nr += ycoord[i];
}
}
int minSum = sum;
for(int i = dy + 1; i <= 50000; ++i){
sum += nl;
sum -= nr;
if(ycoord[i - dy - 1] > 0){
nl += ycoord[i - dy - 1];
sum += ycoord[i - dy - 1];
}
if(ycoord[i] > 0){
nr -= ycoord[i];
}
if(sum < minSum){
minSum = sum;
}
}
return minSum;
}
int main()
{
read();
fout << findxdist() + findydist();
return 0;
}