Cod sursa(job #34881)

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

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

# define  maxn	1325
# define  maxl	3000002

# define  myint	long 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("%lld%lld", &n, &l), i=1; i<=n; i++) scanf("%lld", 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];
			
			sol += ( f[s] - ( e[s-a[i]] - (s-a[i]==a[i]) ) - ( e[s-a[j]] - (s-a[j]==a[j]) ) + ( a[i]+a[j]==s ) );
		}

	printf("%lld\n", sol/(long long)6);
	
	return 0;
}