Pagini recente » Cod sursa (job #2354886) | Cod sursa (job #2531085) | Cod sursa (job #988613) | Cod sursa (job #988978) | Cod sursa (job #611771)
Cod sursa(job #611771)
# include <fstream>
# include <vector>
# include <algorithm>
using namespace std;
ifstream f ("oite.in");
ofstream g ("oite.out");
const int MOD = 206713;
int n, m, cit, sol, a[1050];
struct stu {int i; short j, k;}__attribute__((packed));
vector <stu> v[MOD];
stu make_stu (int a, int b, int c)
{
stu x;
x.i = a; x.j = b; x.k = c;
return x;
}
int cauta (int val, short x, short y)
{
int ret = 0;
int nr = val % MOD;
for (vector <stu> :: iterator it = v[nr].begin (); it != v[nr].end (); ++it)
if (it -> i == val && (it -> j != x && it -> j != y && it -> k != x && it -> k != y))
++ret;
return ret;
}
int main ()
{
f >> n >> m;
for (int i = 1; i <= n; ++i)
f >> a[i];
sort (a + 1, a + n + 1);
for (int i = 1; i <= n; ++i)
for (int j = i + 1; j <= n; ++j)
v[(a[i] + a[j]) % MOD].push_back (make_stu (a[i] + a[j], i, j));
for (int i = 1; i <= n; ++i)
for (int j = i + 1; j <= n; ++j)
sol += cauta (m - (a[i] + a[j]), i, j);
g << sol / 6 << '\n';
return 0;
}