Pagini recente » Cod sursa (job #1090213) | Cod sursa (job #1702452) | Cod sursa (job #667063) | Cod sursa (job #2451668) | Cod sursa (job #1780117)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("oite.in");
ofstream out("oite.out");
const int NMAX = 1029;
const int prim = 10007;
int v[NMAX];
vector <pair<int,int> > H[prim+1];
void AddToHash(int x)
{
int i;
int k=x%prim;
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));
}
int SearchHash(int x)
{
int i;
int k=x%prim;
for(i=0;i<H[k].size();i++)
{
if(H[k][i].first==x)
{
return H[k][i].second;
}
}
return 0;
}
int main()
{
long long int sol=0;
int oi,lana;
in>>oi>>lana;
for(int i=1;i<=oi;i++)
{
in>>v[i];
}
for(int i=1;i<oi;i++)
{
for(int j=i+1;j<=oi;j++)
{
if(lana-v[i]-v[i]>=0)
sol+=SearchHash(lana-v[i]-v[j]);
}
for(int j=0;j<i;j++)
{
AddToHash(v[i]+v[j]);
}
}
out<<sol;
}