Cod sursa(job #67583)

Utilizator raduzerRadu Zernoveanu raduzer Data 25 iunie 2007 12:06:32
Problema Orase Scor 100
Compilator fpc Status done
Runda preONI 2007, Runda Finala, Clasa a 9-a si gimnaziu Marime 1.18 kb
var a,b,d,l:array[1..50100]of longint;
    m,n,i,j,max,z,s,c:longint;

procedure Sort(s, r: Longint);
var
  i, j, x, y: longint;
begin
  i := s; j := r; x := d[(s+r) DIV 2];
  repeat
    while d[i] < x do i := i + 1;
    while x < d[j] do j := j - 1;
    if i <= j then
    begin
      y := d[i]; d[i] := d[j]; d[j] := y;
      y:=l[i]; l[i]:=l[j]; l[j]:=y;
      i := i + 1; j := j - 1;
    end;
  until i > j;
  if s < j then Sort(s, j);
  if i < r then Sort(i, r);
end;


begin
     assign(input,'orase.in');
     reset(input);
     assign(output,'orase.out');
     rewrite(output);
     readln(m,n);
     for i:=1 to n do
     begin
          readln(d[i],l[i]);
     end;
     sort(1,n);
     max:=0;
     s:=0;
     c:=0;
     for i:=2 to n do
     begin
          s:=d[i]-d[1];
          if max<s+l[i] then
          begin
               max:=s+l[i];
               c:=i;
          end;
     end;
     max:=0;
     s:=0;
     for i:=1 to n do
     begin
          if i=c then continue;
          if i<c then s:=d[c]-d[i]
          else s:=d[i]-d[c];
          if max<s+l[i] then max:=s+l[i];
     end;
     writeln(max+l[c]);
close(output);
end.