Pagini recente » Cod sursa (job #2589714) | Cod sursa (job #1454638) | Cod sursa (job #2184242) | Cod sursa (job #2374661) | Cod sursa (job #1157354)
#include <iostream>
#include <fstream>
using namespace std;
#include <map>
map<int,int> H1,H2;
ofstream g("oite.in");
ifstream f("oite.out");
#define LE 2066
#define ll long long
#define cout g
int n,L,i,j,A[LE];
ll result;
int main()
{
f>>n>>L;
for(i=1; i<=n; ++i)
{
f>>A[i];
++H1[A[i]];
for(j=i-1; j>0; --j) ++H2[A[i]+A[j]];
}
// cout<<H2[2]<<'\n';
for(i=1; i<=n; ++i)
{
--H1[A[i]];
for(j=1; j<=n; ++j)
if (i!=j)
--H2[A[i]+A[j]];
for(j=i-1; j>0; --j)
{
int D=A[i]+A[j];
--H1[A[j]];
if (D>L) continue;
D=L-D;
if (H1.find(D-A[j])!=H1.end()) result-=H1[D-A[j]];
if (H2.find(D)!=H2.end()) result+=(ll)H2[D];
++H1[A[j]];
}
for(j=1;j<=n;++j)
if (i!=j)
++H2[A[i]+A[j]];
++H1[A[i]];
}
cout<<result/(ll)6<<'\n';
return 0;
}