Pagini recente » Cod sursa (job #1375254) | Cod sursa (job #1060325) | Cod sursa (job #1398501) | Cod sursa (job #1026583) | Cod sursa (job #332127)
Cod sursa(job #332127)
var l,d:array[1..50000] of longint;
m,n,i,dmax,j,poz,piv,aux:longint;
f,g:text;
k:boolean;
function sort2(min,max:longint):longint;
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[j];
d[j]:=aux;
aux:=l[i];
l[i]:=l[j];
l[j]:=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.