Pagini recente » Cod sursa (job #2669641) | Cod sursa (job #469384) | Cod sursa (job #477835) | Cod sursa (job #2831690) | Cod sursa (job #694627)
Cod sursa(job #694627)
#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
int j,n,S,i,sol,a[1029];
vector<pair<int,pair<int,int> > > H[9007];
void insert(int x)
{
H[x%9007].push_back(make_pair(x,make_pair(i,j)));
}
int OK(pair<int,pair<int,int> > X,int x)
{
if (X.first!=x) return 0;
if (X.second.first==i) return 0;
if (X.second.second==i) return 0;
if (X.second.first==j) return 0;
if (X.second.second==j) return 0;
return 1;
}
void search(int x)
{
for (vector<pair<int,pair<int,int> > >::iterator it=H[x%9007].begin();it!=H[x%9007].end();it++)
if (OK(*it,x)) sol++;
}
int main()
{
freopen("oite.in","r",stdin);
freopen("oite.out","w",stdout);
scanf("%d%d",&n,&S);
for (i=1;i<=n;++i)
scanf("%d",&a[i]);
for (i=1;i<=n;++i)
for (j=i+1;j<=n;++j)
insert(a[i]+a[j]);
for (i=1;i<=n;++i)
for (j=i+1;j<=n;++j)
if (S-a[i]-a[j]>0) search(S-a[i]-a[j]);
printf("%d\n",sol/6);
}