Pagini recente » Cod sursa (job #1213361) | Cod sursa (job #1249687) | Cod sursa (job #989041) | Cod sursa (job #315159) | Cod sursa (job #68126)
Cod sursa(job #68126)
var d,l,a,b:array[1..1000] of longint;
f,g:text;
q,n,m,poz1,poz2:longint;
i,j,x,poz,t,w:longint;
procedure interclaseaza(st,mij,dr:longint);
begin
i:=st;
a:=d;
b:=l;
j:=mij+1;
poz:=st-1;
w:=dr;
while (i<=mij) and (j<=dr) and (i<>j) do
if a[i]<a[j] then begin
inc(poz);
d[poz]:=a[i];
l[poz]:=b[i];
inc(i);
end
else
begin
inc(poz);
d[poz]:=a[j];
l[poz]:=b[j];
inc(j);
end;
for t:=i to mij do begin
inc(poz);
d[poz]:=a[t];
l[poz]:=b[t];
end;
for t:=j to dr do begin
inc(poz);
d[poz]:=a[t];
l[poz]:=b[t];
end;
end;
procedure mergesort(st,dr:longint);
var mij:longint;
begin
if st<dr then begin
mij:=(st+dr) shr 1;
mergesort(st,mij);
mergesort(mij+1,st);
interclaseaza(st,mij,dr);
end;
end;
procedure citesc;
var i:longint;
begin
assign(f,'orase.in'); reset(f);
read(f,m,n);
for i:=1 to n do
read(f,d[i],l[i]);
close(f);
end;
function di(x,y:longint):longint;
begin
di:=abs(d[x]-d[y])+l[x]+l[y];
end;
begin
assign(g,'orase.out'); rewrite(g);
citesc;
mergesort(1,n);
if n=1 then
writeln(g,'0')
else begin
poz1:=1;
poz2:=2;
for q:=3 to n do
if di(q,poz1)>di(poz2,q) then begin
if di(q,poz1)>di(poz1,poz2) then
poz2:=q;
end
else
if di(q,poz2)>di(poz1,poz2) then begin
poz1:=poz2;
poz2:=q;
end;
writeln(g,di(poz1,poz2));
end;
close(g);
end.