Pagini recente » Cod sursa (job #2392946) | Cod sursa (job #1491156) | Cod sursa (job #628742) | Cod sursa (job #1471518) | Cod sursa (job #2600527)
#include <fstream>
#include <algorithm>
#include <map>
using namespace std;
ifstream cin("oite.in");
ofstream cout("oite.out");
int v[1030];
map<int,long long> m;
int main()
{
int n,l,sum;
long long rasp=0;
cin>>n>>l;
for(int i=1;i<=n;++i)
cin>>v[i];
sort(v+1,v+n+1);
for(int i=1;i<=n-1;++i)
for(int j=i+1;j<=n and v[i]+v[j]<=l;++j)
{
sum=v[i]+v[j];
if(m.find(l-sum)!=m.end())
rasp+=m[l-sum];
m[sum]++;
if(3*v[i]+v[j]==l)
rasp++;
if(v[i]+3*v[j]==l)
rasp++;
}
for(int i=1;i<=n;++i)
if(m.find(l-2*v[i])!=m.end())
rasp-=m[l-2*v[i]];
cout<<rasp/3;
return 0;
}