Pagini recente » Cod sursa (job #98972) | Cod sursa (job #1189375) | Cod sursa (job #1224192) | Cod sursa (job #2287481) | Cod sursa (job #1312034)
#include<bits/stdc++.h>
using namespace std;
struct cell
{
int valoare,frecv;
};
const int MODULO=524288;
const int NMAX=1025;
int n,L,a[NMAX];
vector<cell>H[MODULO];
vector<cell>::iterator it;
cell k;
int sol;
inline int Add(int val,bool 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) return (*it).frecv;
return 0;
}
if (ok==0)
{
k.valoare=val;
k.frecv=1;
H[aux].push_back(k);
}
return 0;
}
int main()
{
int i,j;
ifstream fin("oite.in");
fin>>n>>L;
for (i=1;i<=n;i++) fin>>a[i];
fin.close();
for (i=1;i<n;i++)
{
for (j=i+1;j<=n;j++)
if ((a[i]+a[j])<=L)
sol+=Add(L-a[i]-a[j],1);
for (j=1;j<i;j++) Add(a[j]+a[i],0);
}
ofstream fout("oite.out");
fout<<sol<<"\n";
fout.close();
return 0;
}