Pagini recente » Cod sursa (job #658340) | Cod sursa (job #1737752) | Cod sursa (job #654773) | Cod sursa (job #487366) | Cod sursa (job #1312025)
#include<bits/stdc++.h>
using namespace std;
struct cell
{
int valoare,frecv;
};
ifstream fin("oite.in");
ofstream fout("oite.out");
const int MODULO=524288;
const int NMAX=1025;
int n,L,a[NMAX];
vector<cell>H[MODULO];
vector<cell>::iterator it;
long long sol;
inline int Add(int val,int ok)
{
int aux=val&(MODULO-1);
for (it=H[aux].begin();it!=H[aux].end();it++)
if ((*it).valoare==val)
{
if (ok==0) (*it).frecv++;
if (ok==1) (*it).frecv--;
if (ok==2) return (*it).frecv;
return 0;
}
if (ok==0)
{
cell k;
k.valoare=val;
k.frecv=1;
H[aux].push_back(k);
}
return 0;
}
int main()
{
int i,j;
fin>>n>>L;
for (i=1;i<=n;i++) fin>>a[i];
for (i=2;i<n;i++)
for (j=i+1;j<=n;j++)
Add(a[i]+a[j],0);
for (i=2;i<(n-1);i++)
{
for (j=i+1;j<=n;j++) Add(a[i]+a[j],1);
for (j=1;j<i;j++)
if ((a[i]+a[j])<=L)
sol+=Add(L-a[i]-a[j],2);
}
fout<<sol<<"\n";
return 0;
}