Pagini recente » Cod sursa (job #977210) | Cod sursa (job #1219545) | Cod sursa (job #852224) | Cod sursa (job #1853437) | Cod sursa (job #1764984)
#include <iostream>
#include <algorithm>
#include <vector>
#define MAXN 10007
#define val first
#define cnt second
using namespace std;
int C,L,v[1030];
long long Sol;
vector<pair<int,int>> H[MAXN];
void Insert(int V)
{
int S=V%MAXN;
for(int i=0;i<H[S].size();i++)
if(H[S][i].val==V)
{
H[S][i].cnt++;
return;
}
H[S].push_back(make_pair(V,1));
}
int Search(int V)
{
int S=V%MAXN;
for(int i=0;i<H[S].size();i++)
if(H[S][i].val==V)
return H[S][i].cnt;
return 0;
}
int main()
{
freopen("oite.in","r",stdin);
freopen("oite.out","w",stdout);
scanf("%d%d",&C,&L);
for(int i=1;i<=C;i++)
scanf("%d",&v[i]);
for(int i=1;i<C;i++)
{
for(int j=i+1;j<=C;++j)
if(L-v[i]-v[j]>=0)Sol+=Search(L-v[i]-v[j]);
for (int j=1;j<i;++j)
Insert(v[i]+v[j]);
}
printf("%lld",Sol);
return 0;
}