Cod sursa(job #122140)

Utilizator CezarMocanCezar Mocan CezarMocan Data 10 ianuarie 2008 22:13:47
Problema Tribute Scor 90
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.5 kb
type dulap=record
                x,y:longint;
                end;
var v:array[1..50100] of dulap;
    x,y,q:array[0..100100] of longint;
    n,i,j,dx,dy,u,d,m,s1,s2,s,min:longint;

begin
assign(input,'tribute.in');reset(input);
assign(output,'tribute.out');rewrite(output);
readln(n,dx,dy);
i:=dx;dx:=dy;dy:=i;
for i:=1 to n do
        begin
        readln(v[i].x,v[i].y);
        inc(q[v[i].y]);
        end;
for i:=1 to n do
        if v[i].y>dx then
                inc(x[0],v[i].y-dx);
d:=0;u:=dx;
for i:=u to 50010 do
        s2:=s2+q[i];
for i:=1 to 50010 do
        begin
        s1:=s1+q[d];
        if s1>n then
                s1:=n;
        s2:=s2-q[u];
        if s2<0 then
                s2:=0;
        x[i]:=x[i-1]+s1-s2;
        inc(d);inc(u);
        end;
fillchar(q,sizeof(q),0);
for i:=1 to n do
        inc(q[v[i].x]);
for i:=1 to n do
        if v[i].x>dy then
                inc(y[0],v[i].x-dy);
d:=0;u:=dy;
s1:=0;s2:=0;
for i:=u to 50010 do
        s2:=s2+q[i];
for i:=1 to 50010 do
        begin
        s1:=s1+q[d];
        if s1>n then
                s1:=n;
        s2:=s2-q[u];
        if s2<0 then
                s2:=0;
        y[i]:=y[i-1]+s1-s2;
        inc(d);
        inc(u);
        end;
min:=maxlongint;
for i:=0 to 50010 do
        if x[i]<min then
                min:=x[i];
s:=min;
min:=maxlongint;
for i:=0 to 50010 do
        if y[i]<min then
                min:=y[i];
s:=s+min;
writeln(s);
close(input);close(output);
end.