Cod sursa(job #2157640)

Utilizator cyg_ionutStan Ionut Gabriel cyg_ionut Data 9 martie 2018 19:32:09
Problema Tribute Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <bits/stdc++.h>
using namespace std;

const int VM = 5;//50005;
int vx[50005], vy[50005], fx[50005], fy[50005], n;

int calcul(int v[], int nr[], int d) {
    sort(v + 1, v + n + 1);
    int dist = 0, distmin, nrst = 0, nrdr = 0;
    for (int i = 1; i <= n; i++) {
        nr[v[i]]++;
        if (v[i] > d) {
            dist = dist + v[i] - d;
            nrdr++; } }
    distmin = dist;
    for (int i = 1; i + d < VM; i++) {
        nrst = nrst + nr[i - 1];
        dist = dist + nrst - nrdr;
        nrdr = nrdr - nr[i + d];
        distmin = min(distmin, dist); }
    return distmin; }

int main() {
freopen("tribute.in", "r", stdin);
freopen("tribute.out", "w", stdout);
    int dx, dy, ans, x, y;
    scanf("%d %d %d", &n, &dx, &dy);
    for (int i = 1; i <= n; i++) {
        scanf("%d %d", &x, &y);
        vx[i] = x;
        vy[i] = y; }
    ans = calcul(vx, fx, dx) + calcul(vy, fy, dy);
    printf("%d\n", ans);
    return 0; }