Pagini recente » Cod sursa (job #2790509) | Cod sursa (job #1257013) | Cod sursa (job #1579300) | Cod sursa (job #2750440) | Cod sursa (job #496535)
Cod sursa(job #496535)
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
struct point
{
int inf,s1,s2,s3;
point *leg;
};
point *qq,*p,*s[600];
int qqq,y,i,j,k,n,a[101];
long long suma,sum,nr;
void verif(int q,int y)
{
qq=new point;
qq=s[q%(y+1)];
while (qq!=NULL)
{
if (qq->inf==q);
if (qq->s1!=s[i]->s1)
if (qq->s1!=s[i]->s2)
if (qq->s2!=s[i]->s1)
if (qq->s2!=s[i]->s2)
if (qq->s1!=qq->s2)
if (s[i]->s1!=s[i]->s2)
//{
// printf("%d %d %d %d\n",qq->s1,qq->s2,s[i]->s1,s[i]->s2);
nr++;
//}
qq=qq->leg;
}
}
void hash(int x,int y)
{
p=new point;
p->inf=x;
p->s1=i;
p->s2=j;
p->leg=s[x%(y+1)];
s[x%(y+1)]=p;
//p=new point;
//p->inf=x;
//p->s1=i;
//p->s2=j;
//s[q%(qqq+1)]=p;
//if (s[y]!=NULL)
//p->leg=s[y];
//s[y]=p;
}
int main()
{
freopen("oite.in","r",stdin);
freopen("oite.out","w",stdout);
scanf("%d%lld",&n,&sum);
for (i=1;i<=n;i++)
scanf("%d",&a[i]);
for (i=1;i<=n-1;i++)
for (j=i+1;j<=n;j++)
{
suma=a[i]+a[j];
hash(suma,(suma%503));
}
qqq=0;
for (i=0;i<=503;i++)
while (s[i]!=NULL)
{
if (sum-s[i]->inf>=0) verif(sum-s[i]->inf,(sum-s[i]->inf)%503);
s[i]=s[i]->leg;
}
printf("%lld",nr/3);
return 0;
}