Pagini recente » Cod sursa (job #226164) | Cod sursa (job #565863) | Cod sursa (job #2984070) | Cod sursa (job #2570473) | Cod sursa (job #795305)
Cod sursa(job #795305)
#include <cstdio>
#include <vector>
using namespace std;
#define MOD 666013
#define CMAX 1025
struct sum2
{
int o1, o2;
int sum;
};
vector<sum2> H[MOD];
int L, C;
int v[CMAX];
int get(int o1, int o2, int sum)
{
int mod = sum % MOD;
int nr = 0;
for(int i=0;i<H[mod].size();++i)
{
if(H[mod][i].sum == sum && H[mod][i].o1 > o1 && H[mod][i].o2 > o2 && H[mod][i].o1 > o2 && H[mod][i].o2 > o1)
{
++nr;
}
}
return nr;
}
int main()
{
freopen("oite.in", "r", stdin);
freopen("oite.out", "w", stdout);
scanf("%d %d", &C, &L);
for(int i=0;i<C;++i)
{
scanf("%d", &v[i]);
}
for(int i=0;i<C;++i)
{
for(int j=i+1;j<C;++j)
{
sum2 s;
s.o1 = i;
s.o2 = j;
s.sum = v[i] + v[j];
H[s.sum%MOD].push_back(s);
}
}
long long sol = 0;
for(int i=0;i<C;++i)
{
for(int j=i+1;j<C;++j)
{
sol += get(i, j, L - v[i] - v[j]);
}
}
printf("%lld", sol);
return 0;
}