Cod sursa(job #462990)

Utilizator lianaliana tucar liana Data 14 iunie 2010 12:32:33
Problema Triplete Scor 0
Compilator fpc Status done
Runda biti2 Marime 1.16 kb
program triplete;
var f, g:text;
    poz, poza, pozb, x, nm,rez, i, n, m, a, b, j, k, nr:longint;
    v:array[0..4096,0..65] of int64;

procedure citire;
  begin
    readln(f,n,m);
    for i:=1 to m do
      begin
        read(f,a,b);
        poza:=b div 64;
        poz:=b mod 64;
        v[a,poza]:=v[a,poza] or 1 shl (poz-1);
        pozb:=a div 64;
        poz:=a mod 64;
        v[b,pozb]:=v[b,pozb] or 1 shl (poz-1);
      end;
  end;

procedure numarare_biti(a:int64);
  begin
    nm:=0;
    while a>0 do
      begin
        nm:=nm+1;
        a:=a and (a-1);
      end;
    rez:=rez+nm;
  end;

procedure rezolvare;
  begin
    for i:=1 to n do
      for j:=i+1 to n do
        begin
          poza:=j div 64;
          poz:=j mod 64;
          if v[i,poza] and (1 shl (poz-1))>0 then
            for k:=0 to 64 do
              begin
                x:=v[i,k] and v[j,k];
                numarare_biti(x);
              end;
        end;
    writeln(g,rez div 3);
  end;

  begin
    assign(f,'triplete.in'); reset(f);
    assign(g,'triplete.out'); rewrite(g);
    citire;
    rezolvare;
    close(f);
    close(g);
  end.