Cod sursa(job #167331)

Utilizator vlad.maneaVlad Manea vlad.manea Data 29 martie 2008 14:39:03
Problema Oite Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <stdio.h>

#define nmax 1024
#define mod1 1000003
#define mod2 2000003

int H1[mod1], H2[mod2], A[nmax], N, S, ans, L, i, j, u, v;

void read()
{
	freopen("oite.in", "r", stdin);
	scanf("%d%d", &N, &L);
	for (i = 1; i <= N; ++i)
		scanf("%d", &A[i]);
}

void solve()
{
	if (A[N-1] + A[N] <= L)
	{
	++H1[(A[N-1]+A[N]) % mod1];
	++H2[(A[N-1]+A[N]) % mod2];
	}

	for (i = N-2; i > 1; i--)
	{
		for (j = i-1; j >= 1; j--)
		{
			S = A[i] + A[j];
			if (S < L)
			{
				v = (L-S)%mod1;
				u = (L-S)%mod2;
				ans += H1[v] < H2[u]? H1[v]: H2[u];
			}
		}
		for (j = i+1; j <= N; ++j)
		if (A[i] + A[j] <= L)
		{

			++H1[(A[i] + A[j]) % mod1];
			++H2[(A[i] + A[j]) % mod2];
		}
	}
}

void write()
{
	freopen("oite.out", "w", stdout);
	printf("%d\n", ans);
}

int main()
{
	read();

	solve();

	write();

	return 0;
}