Cod sursa(job #28692)

Utilizator andrewgPestele cel Mare andrewg Data 8 martie 2007 10:37:00
Problema Balanta Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.86 kb
const maxn = 1024;

type arr = array[1..maxn]of boolean;

var f:text;
    n,m,k,i,j,x:longint;
    a,b,s,t:arr;

procedure des;
begin
   for i:=1 to n do
   begin
      if (a[i]) or (b[i]) then
      begin
         s[i]:=false;
         t[i]:=false;
      end;
   end;
end;

procedure con(a,b:arr);
begin
   for i:=1 to n do
   begin
      if (s[i]) and (not a[i]) then s[i]:=false;
      if (t[i]) and (not b[i]) then t[i]:=false;
   end;
end;

procedure solve;
begin
   if x=0 then
   begin
      des;
   end;
   if x=1 then
   begin
      con(a,b);
   end;
   if x=2 then
   begin
      con(b,a);
   end;
end;

procedure readdata;
var i:longint;
begin
   assign(f,'balanta.in');
   reset(f);
   readln(f,n,m);
   for i:=1 to n do
   begin
      s[i]:=true;
      t[i]:=true;
   end;
   for i:=1 to m do
   begin
      read(f,k);
      fillchar(a,sizeof(a),false);
      fillchar(b,sizeof(b),false);
      for j:=1 to k do
      begin
         read(f,x);
         a[x]:=true;
      end;
      for j:=1 to k do
      begin
         read(f,x);
         b[x]:=true;
      end;
      readln(f,x);
      solve;
   end;
   close(f);
end;

procedure writedata;
var ok:boolean;
begin
   ok:=false;
   for i:=1 to n do
   begin
      if (s[i]) then
      begin
         if ok then
         begin
            x:=0;
            break;
         end
               else
         begin
            x:=i;
            ok:=true;
         end;
      end;
      if (t[i]) then
      begin
         if ok then
         begin
            x:=0;
            break;
         end
               else
         begin
            x:=i;
            ok:=true;
         end;
      end;
   end;
   assign(f,'balanta.out');
   rewrite(f);
   writeln(f,x);
   close(f);
end;

begin
   readdata;
   writedata;
end.