Cod sursa(job #195836)

Utilizator nusmaibunkeleviprofesor cicalescu nusmaibunkelevi Data 22 iunie 2008 01:37:41
Problema Triplete Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<stdio.h>

#define NMAX 4096

int main(){
freopen("triplete.in","r",stdin);
freopen("triplete.out","w",stdout);
unsigned a[NMAX+1][NMAX/32+1]={{0}},b,r,b2,r2,c2;

int n,m,i,j,k,l,c,nrtr=0,t;
scanf("%d%d",&n,&m);
/*for(i=0;i<=n;++i)
	for(j=0;j<=n;++j) a[i][j]=0;*/
for(i=1;i<=m;++i){
	scanf("%d%d",&l,&c);
	if(l>c) {t=l;l=c;c=t;}
	r=c%32;
	c=c/32;
	b=1;
	b=b<<r;
	a[l][1+c]|=b;
	}
for(i=1;i<n-1;++i)
	for(j=i+1;j<n;++j){
		r=j%32;
		b=1;b=b<<r;
		c=j/32+1;
		if(a[i][c]&b)
			for(k=j+1;k<=n;++k){
				r2=k%32;
				b2=1;b2=b2<<r2;
				c2=k/32+1;
				if((a[i][c2]&b2)&&(a[j][c2]&b2)) {nrtr++;/*printf("%d%d%d\n",i,j,k);*/}
				}
		}
printf("%d",nrtr);
return 0;
}