Cod sursa(job #1067590)

Utilizator vlad_DVlad Dumitriu vlad_D Data 27 decembrie 2013 06:23:34
Problema Tribute Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <cstdio>
#include <algorithm>

using namespace std;

int X[2][50100];
int DX, DY;
int solve(int k, int D) {
  int now = 0;
  int la = 0, lb = 0;
  int a = 0, b = D - 1;
  for (int i = D; i <= 50000; ++i) now += X[k][i] * (i - b), lb += X[k][i]; 
  int best = now;
  while (b <= 50000) {
    now = now + la - lb + X[k][a];
    la += X[k][a]; lb -= X[k][b+1];
    ++a; ++b;
    if (now < best) best = now;
  }
  return best;
}
int main() {
  freopen("tribute.in", "r", stdin);
  freopen("tribute.out", "w", stdout);
  int N; scanf("%d %d %d", &N, &DX, &DY);
  for (int i = 0; i < N; ++i) { int a, b; scanf("%d %d", &a, &b); X[0][a]++; X[1][b]++; }
  printf("%d\n", solve(0, DX + 1) + solve(1, DY + 1));
  return 0;
}