Pagini recente » Cod sursa (job #2421548) | Cod sursa (job #152618) | Cod sursa (job #2847554) | Cod sursa (job #1144328) | Cod sursa (job #731128)
Cod sursa(job #731128)
#include<stdio.h>
#include<algorithm>
using namespace std;
int i,j,s,p,u,m,n,l,s1,nr1,a[1026];
int b[1000002];
int main()
{
freopen("oite.in","r",stdin);
freopen("oite.out","w",stdout);
scanf("%d",&n);
scanf("%d",&l);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
sort(a+1,a+n+1);
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
if(a[i]+a[j]<=1000000) b[a[i]+a[j]]++;
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
if(a[i]+a[j]<=l)
{
nr1=b[l-a[i]-a[j]];
s1=l-a[i]-a[j]-a[i];
p=1;
u=n;
while(p<=u)
{
m=(p+u)/2;
if(a[m]>s1) u=m-1;
else
if(a[m]<s1) p=m+1;
else break;
}
if(p<=u) nr1--;
s1=l-a[i]-a[j]-a[j];
p=1;
u=n;
while(p<=u)
{
m=(p+u)/2;
if(a[m]>s1) u=m-1;
else
if(a[m]<s1) p=m+1;
else break;
}
if(p<=u) nr1--;
if(nr1>=0) s=s+nr1;
}
printf("%d\n",s/9);
return 0;
}