Cod sursa(job #181746)

Utilizator tamas_iuliaTamas Iulia tamas_iulia Data 18 aprilie 2008 21:32:04
Problema Orase Scor 80
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.98 kb
var d,l : array[0..50010] of longint;
    i,j,m,n,max,fin : longint;
    f,g : text;
procedure sort(ll,r : integer);
var i,j,x,y : longint;
    aux : longint;
begin
     i:=ll; j:=r; x:=d[(ll+r)div 2];
     y:=l[(ll+r)div 2];
     repeat
           while (d[i]<x)or((d[i]=x)and(l[i]<y))
            do inc(i);
           while (x<d[j])or((x=d[j])and(y<l[j]))
            do dec(j);
           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;
                inc(i); dec(j);
           end;
     until i>j;
     if ll<j then sort(ll,j);
     if i<r then sort(i,r);
end;
begin
assign(f,'orase.in');reset(f);
assign(g,'orase.out');rewrite(g);
read(f,m,n);
for i:=1 to n do
  read(f,d[i],l[i]);
sort(1,n);
max:=l[1]-d[1];
fin:=0;
for i:=2 to n do
begin
  if d[i]+l[i]+max>fin then
    fin:=d[i]+l[i]+max;
  if l[i]-d[i]>max then
    max:=l[i]-d[i];
end;
writeln(g,fin);
close(g);
end.