Pagini recente » Cod sursa (job #2769445) | Cod sursa (job #1100238) | Istoria paginii runda/winners7/clasament | Istoria paginii runda/usu4 | Cod sursa (job #1480872)
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#define mod 69257
#define maxN 1028
using namespace std;
int n, i, j, s, v[maxN];
long long sol;
vector < pair< int, int > > V[mod];
inline int In_hash(int x, int pos)
{
int i, l = V[x % mod].size(), nr = 0;
for (i = 0; i < l; ++ i)
if (V[x % mod][i].first == x)
nr += V[x % mod][i].second > pos;
return nr;
}
void read()
{
freopen("oite.in", "r", stdin);
scanf("%d %d", &n, &s);
for (i = 1; i <= n; ++ i)
scanf("%d", &v[i]);
}
void solve()
{
sort(v + 1, v + n + 1);
for (i = 1; i < n; ++ i)
for (j = i + 1; j <= n; ++ j)
V[(v[i] + v[j]) % mod].push_back(make_pair(v[i] + v[j], i));
for (i = 1; i < n; ++ i)
for (j = i + 1; j <= n; ++ j)
if (s - v[i] - v[j] >= 0)
sol = (sol + In_hash(s - v[i] - v[j], j));
}
void write()
{
freopen("oite.out", "w", stdout);
printf("%lld", sol);
}
int main()
{
read();
solve();
write();
return 0;
}