Pagini recente » Cod sursa (job #1254813) | Cod sursa (job #708119) | Cod sursa (job #2173601) | Cod sursa (job #1094816) | Cod sursa (job #167342)
Cod sursa(job #167342)
// de ce nu vrei sa-mi dai 100 evaluatorule?
#include <stdio.h>
#define nmax 1025
#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;
}