Cod sursa(job #291015)

Utilizator belgun_adrianBelgun Dimitri Adrian belgun_adrian Data 29 martie 2009 11:25:37
Problema Balanta Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.78 kb
// Arhiva de probleme - Balanta

type
    vector = array[1..1024] of integer;

var
    n, m, i, j, k, t, ig, iu, ng, nu : integer;
    a, b, g, u : vector;
    f: text;

procedure vINT (var x, y : vector);
var i: integer;
begin
for i := 1 to n do x[i] := x[i] and y[i];
end;


procedure vSCAD (var x, y : vector);
var
    i: integer;
begin
for i := 1 to n do x[i] := x[i] and not y[i];
end;


begin
assign  (f, 'balanta.in');
reset   (f);
readln  (f, n, m);
                    {
fillchar (g, n, 1);
fillchar (u, n, 1);
                     }
for i :=1 to n do
    begin
    g[i] := 1;
    u[i] := 1;
    end;

for i := 1 to m do
    begin
    fillchar(a, n*sizeof(a[1]), 0);
    fillchar(b, n*sizeof(b[1]), 0);

    read    (f, k);
    for j := 1 to k do
        begin
        read(f, t);
        a[t] := 1;
        end;
    for j := 1 to k do
        begin
        read(f, t);
        b[t] := 1;
        end;

    readln  (f, k);

    if (k = 0) then // mase egale
        begin
        vSCAD (g, a); vSCAD (g,b);
        vSCAD (u, a); vSCAD (u,b);
        end
    else
    if (k = 1) then // stanga mai grea
        begin
        vINT (g, a);
        vINT (u, b);
        end
    else
 // if (k = 2) then // dreapta mai grea
        begin
        vINT (g, b);
        vINT (u, a);
        end;
    end;
close   (f);

for i:=1 to n do
    begin
    if (g[i] = 1) then
        begin
        inc (ng);
        ig := i;
        end;
    if (u[i] = 1) then
        begin
        inc (nu);
        iu := i;
        end;
    end;

assign  (f, 'balanta.out');
rewrite (f);

if (ng = 1) and (nu = 0) then
    writeln (f, ig)
else
if (ng = 0) and (nu = 1) then
    writeln (f, iu)
else
    writeln (f, 0);

close   (f);
end.