Pagini recente » Cod sursa (job #668425) | Cod sursa (job #1537417) | Cod sursa (job #567809) | Cod sursa (job #3255152) | Cod sursa (job #167877)
Cod sursa(job #167877)
#include <stdio.h>
#define dif 10000
#define bz 1500001
struct nod
{
long el;
nod *ua;
} *l[bz+2];
long i,j,c,sm,ct,nr,a1,a2,h;
long a[1035],s[624777];
void clad(long loc1, long x)
{
nod *p;
p=new nod;
p->el=x;
p->ua=l[loc1];
l[loc1]=p;
}
void cauta(long loc1, long x)
{
nod *p;
p=l[loc1];
while (p)
{
h=p->el;
a1=h/dif;
a2=h%dif;
if (a[a1]+a[a2]==sm-a[x/dif]-a[x%dif] && a1!=x/dif && a1!=x%dif && a2!=x/dif && a2!=x%dif)
nr++;
p=p->ua;
}
}
int main()
{
freopen("oite.in","r",stdin);
freopen("oite.out","w",stdout);
scanf("%ld %ld",&c,&sm);
for (i=1; i<=c; i++)
scanf("%ld",&a[i]);
for (i=1; i<c; i++)
for (j=i+1; j<=c; j++)
{
ct++;
s[ct]=dif*i+j;
clad((a[s[ct]/dif]+a[s[ct]%dif])%bz,s[ct]);
}
for (i=1; i<=ct; i++)
cauta((sm-a[s[i]%dif]-a[s[i]/dif])%bz,s[i]);
printf("%ld",nr/6);
fclose(stdin);
fclose(stdout);
return 0;
}