Cod sursa(job #249829)

Utilizator chelaru_t_achelaru traian andrei chelaru_t_a Data 29 ianuarie 2009 12:41:56
Problema Zeap Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.66 kb
var z:array [1..300000] of longint;
    i:longint;
    s:string;
    f,g:text;

 procedure insereaza(s:string);
  var cod:integer;
  begin
   i:=i+1;
   val(s,z[i],cod);
  end;

 procedure sterge(s:string);
  var cod:integer;
      j,n:longint;
      ok:boolean;
  begin
   val(s,n,cod);
   ok:=false;
   for j:=1 to i do
     if ok then z[j-1]:=z[j]
     else
       if z[j]=n then ok:=true;
   if ok then i:=i-1
   else writeln(g,-1);
  end;

 procedure cauta(s:string);
  var cod:integer;
      n,j:longint;
      ok:boolean;
  begin
   val(s,n,cod);
   ok:=false;
   j:=0;
   while (j<i) and (not ok) do
     begin
     j:=j+1;
     if z[j]=n then ok:=true;
     end;
   if ok then writeln(g,1)
   else writeln(g,0);
  end;

 procedure maxd;
  var j,min,max:longint;
  begin
   if i<2 then writeln(g,-1)
   else
     begin
     min:=z[1];
     max:=z[1];
     for j:=2 to i do
       begin
       if min>z[j] then min:=z[j];
       if max<z[j] then max:=z[j];
       end;
     writeln(g,max-min);
     end;
  end;

 procedure mind;
  var j,k,min:longint;
  begin
   min:=z[1]-z[2];
   if min<0 then min:=-min;
   for j:=1 to i do
     for k:=1 to i do
       if (z[j]-z[k]>0) and (min>z[j]-z[k]) then min:=z[j]-z[k];
   writeln(g,min);
  end;

begin
  assign(f,'zeap.in');
  assign(g,'zeap.out');
  reset(f);
  rewrite(g);
  i:=0;
  while not eof(f) do
    begin
    readln(f,s);
    case s[1] of
    'I':insereaza(copy(s,3,length(s)));
    'S':sterge(copy(s,3,length(s)));
    'C':cauta(copy(s,3,length(s)));
    'M':if s='MAX' then maxd
        else mind;
    end;
    end;
  close(f);
  close(g);
end.