Pagini recente » Cod sursa (job #569518) | Cod sursa (job #2192007) | Cod sursa (job #2528550) | Cod sursa (job #2914681) | Cod sursa (job #1663194)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("oite.in");
ofstream out("oite.out");
const int pat =4999;
vector <pair <int ,int> > H[pat+1];
int query(int x)
{
int k=x%pat;
int i;
for(i=0;i<H[k].size();i++)
{
if(H[k][i].first==x)
return H[k][i].second;
}
return 0;
}
void add(int x)
{
int k=x%pat;
int i;
for(i=0;i<H[k].size();i++)
{
if(H[k][i].first==x)
{
H[k][i].second++;
return;
}
}
H[k].push_back(make_pair(x,1));
return;
}
int a[1026];
int main()
{long long i,j,l,n,sol=0;
in>>n>>l;
for(i=1;i<=n;i++)
in>>a[i];
for(i=1;i<=n;i++)
{
for(j=i+1;j<=n;j++)
if(l-a[i]-a[j]>0)
{
sol+=query(l-a[i]-a[j]);
}
for(j=1;j<i;j++)
{
add(a[i]+a[j]);
}
}
out<<sol<<'\n';
return 0;
}