53 lines
968 B
ObjectPascal
53 lines
968 B
ObjectPascal
type sj=array[1..10001]of longint;
|
|
var x,y:array[1..10001]of longint;
|
|
i,mid,step,n,a,min:longint;
|
|
procedure setio;
|
|
begin
|
|
assign(input,'sol.in');
|
|
assign(output,'sol.out');
|
|
reset(input);
|
|
rewrite(output);
|
|
end;
|
|
procedure print;
|
|
begin
|
|
close(input);
|
|
close(output);
|
|
end;
|
|
procedure px(l,r:longint; var y:sj);
|
|
var i,j,m,t:longint;
|
|
begin
|
|
i:=l; j:=r; m:=y[(l+r)div 2];
|
|
repeat
|
|
while y[i]<m do inc(i);
|
|
while y[j]>m do dec(j);
|
|
if i<=j then
|
|
begin
|
|
t:=y[i]; y[i]:=y[j]; y[j]:=t;
|
|
inc(i); dec(j);
|
|
end;
|
|
until i>j ;
|
|
if l<j then px(l,j,y);
|
|
if r>i then px(i,r,y);
|
|
end;
|
|
begin
|
|
setio;
|
|
readln(n);
|
|
for i:=1 to n do
|
|
read(x[i],y[i]);
|
|
px(1,n,y);
|
|
mid:=y[n div 2+1];
|
|
step:=0;
|
|
for i:=1 to n do
|
|
step:=step+abs(y[i]-mid);
|
|
px(1,n,x);
|
|
for i:=1 to n do
|
|
x[i]:=x[i]-i+1;
|
|
px(1,n,x);
|
|
mid:=x[n div 2+1];
|
|
for i:=1 to n do
|
|
step:=step+abs(x[i]-mid);
|
|
writeln(step);
|
|
print;
|
|
end.
|
|
|