Cod sursa(job #34887)

Utilizator m_dersidanDersidan Mihai m_dersidan Data 21 martie 2007 16:49:21
Problema Oite Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
# include <stdio.h>

# define  _fin  "oite.in"
# define  _fout "oite.out"

# define  maxn	1325
# define  maxl	1500002

# define  myint	long

myint f[maxl], e[maxl], a[maxn], n, l;

int main()
{
	freopen(_fin, "r", stdin);
	freopen(_fout,"w", stdout);
	myint i, j, sol=0, s;

	for (scanf("%ld%ld", &n, &l), i=1; i<=n; i++) scanf("%ld", a+i), ++e[a[i]];
	for (i=1; i<n; i++) for (j=i+1; j<=n; j++)
		if ( a[i]+a[j]<maxl ) ++f[a[i]+a[j]];

	for (i=1; i<n; i++)
		for (j=i+1; j<=n; j++)
		{
			s = l-a[i]-a[j];

			if ( s <=0 ) continue;

			sol += ( f[s] - (e[s-a[i]]-(s-a[i]==a[i]))*(s-a[i]>0)
						  - (e[s-a[j]]-(s-a[j]==a[j]))*(s-a[j]>0)
						  + (a[i]+a[j]==s) );
		}

	printf("%ld\n", sol/(long long)6);

	return 0;
}