Pagini recente » Cod sursa (job #2987984) | Cod sursa (job #509325) | hai | Cod sursa (job #506875) | Cod sursa (job #167714)
Cod sursa(job #167714)
#include <stdio.h>
#define bz 1879
#define bz2 1237
#define mx 1148577
struct poi
{
long s,a,b;
} s[mx+2];
struct nod
{
poi el;
nod *ua;
} *l[bz+2][bz2+2];
long i,j,c,sm,ct,nr;
long a[1035];
void clad(long loc1, long loc2, poi x)
{
nod *p;
p=new nod;
p->el=x;
p->ua=l[loc1][loc2];
l[loc1][loc2]=p;
}
void cauta(long loc1, long loc2, poi x)
{
nod *p;
p=l[loc1][loc2];
while (p)
{
poi h=(p->el);
if (h.s==sm-x.s && h.a!=x.a && h.a!=x.b && h.b!=x.a && h.b!=x.b)
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].s=a[i]+a[j];
s[ct].a=i;
s[ct].b=j;
clad((s[ct].s)%bz,(s[ct].s)%bz2,s[ct]);
}
for (i=1; i<=ct; i++)
cauta((sm-s[i].s)%bz,(sm-s[i].s)%bz2,s[i]);
printf("%ld",nr/6);
fclose(stdin);
fclose(stdout);
return 0;
}