Cod sursa(job #543919)

Utilizator indestructiblecont de teste indestructible Data 28 februarie 2011 19:03:12
Problema Triplete Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <stdio.h>
#define NMAX 4005
#define LMAX 35
#define ll long long
int n,m,A[NMAX];
ll rez1,rez2;
char line[LMAX];
inline int cif(char x)
{
	return x>='0' && x<='9';
}
int main()
{
	freopen("triplete.in","r",stdin);
	freopen("triplete.out","w",stdout);
	scanf("%d%d\n",&n,&m);
	int i,x,y,poz;
	for (i=1; i<=m; i++)
	{
		fgets(line+1,LMAX,stdin);
		x=y=poz=0;
		while (!cif(line[poz+1])) poz++;
		while (cif(line[poz+1])) poz++,x=x*10+line[poz]-'0';
		while (!cif(line[poz+1])) poz++;
		while (cif(line[poz+1])) poz++,y=y*10+line[poz]-'0';
		A[x]++; A[y]++;
	}
	for (i=1; i<=n; i++)
		rez1+=(ll)A[i]*(n-1-A[i]);
	rez1/=2;
	rez2=(ll)n*(n-1)*(n-2)/6;
	printf("%lld\n",rez2-rez1);
	return 0;
}