Pagini recente » Cod sursa (job #3189156) | Cod sursa (job #3262452) | Cod sursa (job #3291563) | Cod sursa (job #3274993) | Cod sursa (job #3276168)
#include <iostream>
#include <vector>
#include <cmath>
#include <fstream>
using namespace std;
ifstream fin("tribute.in");
ofstream fout("tribute.out");
int main()
{
int n, dx, dy,x1,y1;
fin >> n >> dx >> dy;
int sumy=0, sumx=0;
vector<int>y(n);
vector<int>x(n);
for (int i = 0; i < n; ++i) {
fin >> x1 >> y1;
sumx += x1;
sumy += y1;
x[i] = x1;
y[i] = y1;
}
int pozdxsus, pozdxjos, pozdyjos, pozdysus;
int pozdx = round(sumx / n);
int pozdy = round(sumy / n);
if (dx % 2 == 0) {
pozdxsus = pozdx+(dx / 2);
pozdxjos = pozdx - (dx / 2);
}
else if ((int)sumx / n == pozdx) {
pozdxsus = pozdx + (dx / 2) + 1;
pozdxjos = pozdx - (dx / 2);
}
else {
pozdxsus = pozdx + (dx / 2);
pozdxjos = pozdx - (dx / 2)-1;
}
if (dy % 2 == 0) {
pozdysus = pozdx + (dx / 2);
pozdyjos = pozdx - (dx / 2);
}
else if ((int)sumx / n == pozdx) {
pozdysus = pozdx + (dx / 2) + 1;
pozdyjos = pozdx - (dx / 2);
}
else {
pozdysus = pozdx + (dx / 2);
pozdyjos = pozdx - (dx / 2) - 1;
}
int dist = 0;
for (int i = 0; i < n; ++i) {
if (x[i] < pozdxjos) {
dist+=pozdxjos -x[i];
}
else if (x[i] > pozdxsus) {
dist+= x[i]-pozdxsus;
}
if (y[i] < pozdyjos) {
dist += pozdyjos - y[i];
}
else if (y[i] > pozdysus) {
dist += pozdysus - y[i];
}
}
fout << dist;
return 0;
}