Cod sursa(job #243870)

Utilizator mottyMatei-Dan Epure motty Data 14 ianuarie 2009 10:02:02
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<stdio.h>

#define M 801

#define Q 30001

int i=1,j,frec[Q],sum[Q],v[M],n,ls,s;

void calcul()
{
	for(i=1;i<n-1;++i)
		for(j=i+1;j<n;++j)
		{
			if(v[i]+v[j]>=Q)
				ls=n;
			else
				ls=sum[ v[i] + v[j] ];
			s+= ls - j;
		}
	printf("%d\n",s);
}

int main()
{
	//Declaratii
	int x;
	freopen("nrtri.in","r",stdin);
	freopen("nrtri.out","w",stdout);
	//Citiri
	scanf("%d",&n);
	//Vector frecventa
	while (n--)
	{
		scanf("%d",&x);
		++frec[x];
	}
	//Vector de sume partiale
	sum[0]=0;
	for(i=1;i<Q;++i)
		sum[i]=sum[i-1]+frec[i];
	//Vector sortat
	for(n=0,i=1;i<Q;++i)
		for(j=1;j<=frec[i];++j)
			v[++n]=i;
	calcul();
	return 0;
}