Cod sursa(job #29431)

Utilizator floringh06Florin Ghesu floringh06 Data 9 martie 2007 13:40:24
Problema Balanta Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 2.04 kb
var fi,fo:text;
    i,j,n,k,m,p,r,ct,ind,ct1,ind1:integer;
    amin,amax,ax,bx:array[1..2000] of longint;
    ni,nj:array[1..2000] of longint;

begin
 assign(fi,'balanta.in'); reset(fi);
 assign(fo,'balanta.out'); rewrite(fo);
 readln(fi,n,m);
 for i:=1 to n do
  begin
   amin[i]:=1;
   amax[i]:=1;
  end;
 for i:=1 to m do
  begin
   read(fi,k);
   for j:=1 to k do
    read(fi,ax[j]);
   for j:=1 to k do
    read(fi,bx[j]);
   read(fi,r);
   case r of
    1: begin
         for p:=1 to n do
          begin
           if amax[p]=1 then ni[p]:=1
             else ni[p]:=0;
           amax[p]:=0;
          end;
         for p:=1 to k do
          if ni[ax[p]]=1 then amax[ax[p]]:=1;
         for p:=1 to n do
          begin
           if amin[p]=1 then nj[p]:=1
            else nj[p]:=0;
           amin[p]:=0;
          end;
         for p:=1 to k do
          if nj[bx[p]]=1 then amin[bx[p]]:=1;
       end;
    2: begin
         for p:=1 to n do
          begin
           if amax[p]=1 then ni[p]:=1
             else ni[p]:=0;
           amax[p]:=0;
          end;
         for p:=1 to k do
          if ni[bx[p]]=1 then amax[bx[p]]:=1;
         for p:=1 to n do
          begin
           if amin[p]=1 then nj[p]:=1
            else nj[p]:=0;
           amin[p]:=0;
          end;
         for p:=1 to k do
          if nj[ax[p]]=1 then amin[ax[p]]:=1;
       end;
    0: begin
         for p:=1 to k do
          begin
           if amax[bx[p]]=1 then amax[bx[p]]:=0;
           if amin[ax[p]]=1 then amin[ax[p]]:=0;
          end;
         for p:=1 to k do
          begin
           if amax[ax[p]]=1 then amax[ax[p]]:=0;
           if amin[bx[p]]=1 then amin[bx[p]]:=0;
          end;
       end;
    end;
 end;
ct:=0;
for i:=1 to n do
 if amin[i]=1 then begin inc(ct); ind:=i; end;
ct1:=0;
for i:=1 to n do
 if amax[i]=1 then begin inc(ct1); ind1:=i; end;
if (ct=1) and (ct1=0) then write(fo,ind)
 else if (ct1=1) and (ct=0) then write(fo,ind1)
  else write(fo,0);
close(fi);
close(fo);
end.