Pagini recente » Ciurul lui Erathostene | Cod sursa (job #413842) | Diferente pentru concurs-mihai-patrascu-2013 intre reviziile 4 si 15 | Galerie | Cod sursa (job #332002)
Cod sursa(job #332002)
var l,d:array[1..50000] of 0..1000000;
m,n,i,dmax,j,poz:longint;
f,g:text;
function sort2(min,max:longint):longint;
var piv,aux:longint;
k:boolean;
begin
piv:=d[min+(max-min) div 2];
i:=min-1;j:=max+1;
k:=true;
repeat
repeat
i:=i+1;
until d[i]>=piv;
repeat
j:=j-1;
until d[j]<=piv;
if i<j then
begin
aux:=d[i];
d[i]:=d[i+1];
d[i+1]:=aux;
aux:=l[i];
l[i]:=l[i+1];
l[i+1]:=aux;
end
else
begin
k:=false;
sort2:=j;
break;
end;
until k=false;
end;
procedure sort1(min,max:longint);
var p:longint;
begin
if min<max then
begin
p:=sort2(min,max);
sort1(min,p);
sort1(p+1,max);
end;
end;
begin
assign(f,'orase.in');
assign(g,'orase.out');
reset(f);rewrite(g);
readln(f,m,n);
for i:=1 to n do
read(f,d[i],l[i]);
sort1(1,n);
j:=l[1]-d[1];
poz:=1;
for i:=2 to n do
begin
if l[i]+l[poz]+d[i]-d[poz]>dmax then
dmax:=l[i]+l[poz]+d[i]-d[poz];
if l[i]-d[i]>j then
begin
j:=l[i]-d[i];
poz:=i;
end;
end;
write(g,dmax);
close(f);close(g);
end.