Cod sursa(job #332002)

Utilizator ionutz32Ilie Ionut ionutz32 Data 16 iulie 2009 10:58:29
Problema Orase Scor 10
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.56 kb
var l,d:array[1..50000] of 0..1000000;
m,n,i,dmax,j,poz:longint;
f,g:text;
function sort2(min,max:longint):longint;
         var piv,aux:longint;
         k:boolean;
         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[i+1];
                  d[i+1]:=aux;
                  aux:=l[i];
                  l[i]:=l[i+1];
                  l[i+1]:=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.