Cod sursa(job #126870)

Utilizator Pepelea_FlaviuFlaviu Pepelea Pepelea_Flaviu Data 22 ianuarie 2008 22:15:49
Problema Orase Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.02 kb
var fi,fo:text;
    n,m,i,j,smax,max:longint;
    d,l:array[1..50000]of longint;
function part(st,dr:longint):longint;
var i,j,aux1,aux2,s:longint;
begin
  i:=st; j:=dr; s:=-1;
  while i<j do
    begin
      if d[i]>d[j] then
        begin
          aux1:=d[i]; aux2:=l[i];
          d[i]:=d[j]; l[i]:=l[j];
          d[j]:=aux1; l[j]:=aux2;
          s:=-s;
        end;
      if s=1 then inc(i)
             else dec(j);
    end;
  part:=i;
end;
procedure qsort(st,dr:longint);
var p:longint;
begin
  if st<dr then
    begin
      p:=part(st,dr);
      qsort(st,p-1);
      qsort(p+1,dr);
    end;
end;
begin
  assign(fi,'orase.in'); reset(fi);
  assign(fo,'orase.out'); rewrite(fo);
  read(fi,m,n);
  for i:=1 to n do
    read(fi,d[i],l[i]);
  qsort(1,n);
  max:=l[1]-d[1];
  smax:=d[2]+l[2]+max;
  for i:=3 to n do
    begin
      if max<l[i-1]-d[i-1] then max:=l[i-1]-d[i-1];
      if smax<d[i]+l[i]+max then smax:=d[i]+l[i]+max;
    end;
  writeln(fo,smax);
  close(fi);
  close(fo);
end.