Pagini recente » Cod sursa (job #1256379) | Cod sursa (job #537591) | Cod sursa (job #1676) | Cod sursa (job #2242487) | Cod sursa (job #167864)
Cod sursa(job #167864)
#include <stdio.h>
#define dif 10000
#define bz 5981289
#define mx ((1<<20)+5)
struct poi
{
long s,a;
} s[mx+2],h;
struct nod
{
poi el;
nod *ua;
} *l[bz+2];
long i,j,c,sm,ct,nr,a1,a2;
long a[1035];
void clad(long loc1, poi x)
{
nod *p;
p=new nod;
p->el=x;
p->ua=l[loc1];
l[loc1]=p;
}
void cauta(long loc1, poi x)
{
nod *p;
p=l[loc1];
while (p)
{
h=(p->el);
a1=h.a/dif;
a2=h.a%dif;
if (h.s==sm-x.s && a1!=x.a/dif && a1!=x.a%dif && a2!=x.a/dif && a2!=x.a%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].s=a[i]+a[j];
s[ct].a=dif*i+j;
clad(s[ct].s%bz,s[ct]);
}
for (i=1; i<=ct; i++)
cauta(sm-s[i].s%bz,s[i]);
printf("%ld",nr/6);
fclose(stdin);
fclose(stdout);
return 0;
}