Pagini recente » Cod sursa (job #383797) | Cod sursa (job #1070052) | Cod sursa (job #2170390) | Cod sursa (job #1996390) | Cod sursa (job #198048)
Cod sursa(job #198048)
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
struct tool{int a; int b; int c;};
long n,i,j,l,v[1225],nr,s,rez;
vector <tool> h[93937];
tool x[550000];
int main(){
freopen("oite.in","r",stdin);
freopen("oite.out","w",stdout);
scanf("%d%d",&n,&l);
for (i=1;i<=n;i++)
scanf("%d",&v[i]);
sort(v+1,v+n+1);
for (i=1;i<n;i++)
for (j=i+1;j<=n;j++)
{
nr++;
x[nr].a=v[i]+v[j];
x[nr].b=i;
x[nr].c=j;
}
//sort(x+1,x+nr+1,cmp);
/*for (i=1;i<=nr;i++)
printf("%d ",x[i]);
printf("\n");*/
for (i=1;i<=nr;i++)
h[x[i].a%93937].push_back(x[i]);
//printf("%d\n",h[1][0].a);
//printf("%d\n",h[3].size());
/*for (i=1;i<=8;i++)
{
for (j=0;j<h[i].size();j++)
printf("%d ",h[i][j].a);
printf("\n");
}*/
for (i=1;i<=nr;i++)
{
s=l-x[i].a;
if (s>0)
{
s=s%93937;
for (j=0;j<h[s].size();j++)
if ((x[i].a+h[s][j].a==l)&&(x[i].b!=h[s][j].b&&x[i].b!=h[s][j].c&&x[i].c!=h[s][j].b&&x[i].c!=h[s][j].c))
rez++;
}
}
printf("%d\n",rez/6);
return 0;
}