Pagini recente » Cod sursa (job #815268) | Cod sursa (job #1827783) | Cod sursa (job #1984652) | Cod sursa (job #1634661) | Cod sursa (job #480662)
Cod sursa(job #480662)
#include <fstream>
#include<list>
//#include <iostream>
#define NMAX 1026
#define h 699967
using namespace std;
int A[NMAX];
int NR;
int S,N;
list< pair<int,int> > List[h];
inline int hash(int x)
{
return x%h;
}
void rezolva()
{
int x;
for(int i=1;i<=N-3;i++)
for(int j=i+1;j<=N-2;j++)
{
x=S-(A[i]+A[j]);
for(list<pair<int,int> >::iterator itr=List[hash(x)].begin();itr!=List[hash(x)].end();itr++)
{
if(itr->first == x)
{
if(itr->second / 1000 != i && itr->second % 1000 != i)
if(itr->second / 1000 != j && itr->second %1000 !=j)
{
NR++;
// cout<<itr->first<<" "<<x<<" "<<itr->second<<" "<<i<<" "<<j<<endl;
}
}
}
}
}
void init()
{
for(int i=3;i<=N-1;i++)
for(int j=i+1;j<=N;j++)
{
List[hash(A[i]+A[j])].push_back(make_pair(A[i]+A[j],i*1000+j));
}
}
void citire()
{
fstream fin("oite.in",ios::in);
fin>>N>>S;
for(register int i=1;i<=N;i++)
fin>>A[i];
fin.close();
}
void afisare()
{
fstream fout("oite.out",ios::out);
fout<<NR/2<<"\n";
fout.close();
}
int main(int argc, char* argv[])
{
citire();
init();
rezolva();
afisare();
}