Cod sursa(job #60198)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 12 mai 2007 22:24:40
Problema Triplete Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<stdio.h>
unsigned long long int i,doila[64],n,m,a,b,c,d,col,bit,j,x[4096][32],k,y,sol;
int main()
{       doila[0]=1;
	for(i=1;i<=63;i++)
	doila[i]=doila[i-1]*2;
	FILE *f,*g;
	f=fopen("triplete.in","r");
	g=fopen("triplete.out","w");
	fscanf(f,"%llu%llu",&n,&m);
	for(i=1;i<=m;i++)
	{
		fscanf(f,"%llu%llu",&a,&b);
		c=(a<b)?a:b;
		d=(a<b)?b:a;
		col=d/64;bit=d%64;
		x[c-1][col]|=doila[bit];
	}
	for(i=0;i<n-1;i++)
	for(j=i+1;j<=n-1;j++)
	    { col=j/64;bit=j%64;a=x[i][col];
	      if(bit) a/=doila[bit]-1;a%=2;
	       if(a)
		for(k=0;k<32;k++)
		  {y=x[i][k]&x[j][k];
		   while(y) {sol+=y%2;y/=2;}
		  }
            }
	fprintf(g,"%llu\n",sol);
	fcloseall();
	return 0;
}