Cod sursa(job #240982)

Utilizator ilincaSorescu Ilinca ilinca Data 9 ianuarie 2009 01:24:43
Problema Numarare triunghiuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <stdio.h>
#include <algorithm>

#define nmax 805
#define vmax 30005

using namespace std;

int n, v [nmax], f [vmax];



void scan ()
{
	int i;
	scanf ("%d", &n);
	for (i=1; i<=n; ++i)
		scanf ("%d", &v [i]);
}

void init ()
{
	int i, c=0;
	for (i=1; i<=n; ++i)
		f [v [i]]=i;
	for (i=0; i<=v [n]; ++i)
	{	
		if (!f [i])
			f [i]=c;
		else
			c=f [i];
	}
}

int nrtri ()
{
	int i, j, num=0;
	for (i=1; i<n; ++i)
	{
		for (j=i+1; j<n; ++j)
			if (v [i] != v [j])
				num+=f [v [i]+v [j]]-f [v [j]-1]-1;
			else
				num+=f [v [i]<<1]-f [v [i]-1]-2;
	}
	return num;
}

int main ()
{
	freopen ("nrtri.in", "r", stdin);
	freopen ("nrtri.out", "w", stdout);
	scan ();
	sort (v+1, v+1+n);
	init ();
	printf ("%d\n", nrtri ());
	return 0;
}