Pagini recente » Cod sursa (job #1731104) | Cod sursa (job #1485557) | Cod sursa (job #2495313) | Cod sursa (job #2900844) | Cod sursa (job #686306)
Cod sursa(job #686306)
# include <algorithm>
# include <cstdio>
# include <vector>
using namespace std;
const char *FIN = "oite.in", *FOU = "oite.out";
const int MOD = 206713, MAX = 1040;
int N, M, sol, V[MAX];
vector < pair < int, pair <int, int> > > G[MOD];
inline int search (int nr, int i, int j) {
if (nr < 0) return 0;
int sl = 0, val = nr % MOD;
for (typeof (G[val].begin ()) it = G[val].begin (); it != G[val].end (); ++it)
if (it -> first == val && (it -> second.first != i && it -> second.first != j &&
it -> second.second != i && it -> second.second != j))
sl += 1;
return sl;
}
int main (void) {
freopen (FIN, "r", stdin);
scanf ("%d %d", &N, &M);
for (int i = 1; i <= N; ++i)
scanf ("%d", V + i);
sort (V + 1, V + N + 1);
for (int i = 1; i <= N; ++i)
for (int j = i + 1; j <= N; ++j)
G[(V[i] + V[j]) % MOD].push_back (make_pair (V[i] + V[j], make_pair (i, j)));
for (int i = 1; i <= N; ++i)
for (int j = i + 1; j <= N; ++j)
sol += search (M - V[i] - V[j], i, j);
fprintf (fopen (FOU, "w"), "%d", sol / 6);
}