Pagini recente » Cod sursa (job #830435) | Cod sursa (job #321808) | Cod sursa (job #1563307) | Cod sursa (job #1348547) | Cod sursa (job #543393)
Cod sursa(job #543393)
#include <stdio.h>
#include <vector>
using namespace std;
struct sp
{
long long s1,s2,s;
};
vector <sp> h[104729];
sp aux;
long long n,v[1025],sol;
inline bool comp(long long i,long long j,long long k,long long l)
{
if (h[i][j].s1==h[k][l].s1) return 0;
if (h[i][j].s1==h[k][l].s2) return 0;
if (h[i][j].s2==h[k][l].s1) return 0;
if (h[i][j].s2==h[k][l].s2) return 0;
return 1;
}
int main()
{
long long i,j,k,l,a;
freopen("oite.in","r",stdin);
freopen("oite.out","w",stdout);
scanf("%lld%lld",&n,&l);
for (i=1;i<=n;++i)
scanf("%lld",&v[i]);
for (i=1;i<=n;++i)
for (j=i+1;j<=n;++j)
if (i!=j)
{
aux.s1=i;
aux.s2=j;
aux.s=v[i]+v[j];
h[aux.s%104729].push_back(aux);
}
for (i=0;i<104730;++i)
for (j=0;j<h[i].size();++j)
{
a=(l-i)%104729;
if (a<0) a+=104729;
for (k=0;k<h[a].size();++k)
if ((h[i][j].s+h[a][k].s==l)&&(comp(i,j,a,k)))
++sol;
}
printf("%lld",sol/6);
return 0;
}