Pagini recente » Cod sursa (job #830719) | Cod sursa (job #2830956) | Cod sursa (job #2027074) | Cod sursa (job #2555809) | Cod sursa (job #964728)
Cod sursa(job #964728)
#include <fstream>
#include <vector>
#define In "oite.in"
#define Out "oite.out"
#define MOD 600003
#define Nmax 1030
using namespace std;
class Hash
{
public :
inline void Add(int x)
{
int r = x% MOD;
v[r].push_back(x);
}
inline int Query(int x)
{
int r = x%MOD,nr = 0;
for(vector<int>::iterator it=v[r].begin();it!=v[r].end(); ++it)
if(*it==x)
++nr;
return nr;
}
private : vector<int>v[MOD];
};
Hash H;
int N, S, Sol,A[Nmax];
inline void Read()
{
ifstream f(In);
f >> N >> S;
for(int i = 1 ;i <= N ; ++i)
f>>A[i];
f.close();
}
inline void Solve()
{
int i,j;
for(i = 1;i <= N; ++i)
{
for(j = i+1 ;j <= N; ++j)
if(A[i] + A[j]<=S)
Sol += H.Query(S-A[i] - A[j]);
for(j = 1; j < i; ++j)
H.Add(A[i] + A[j]);
}
}
inline void Write()
{
ofstream g(Out);
g<<Sol<<"\n";
g.close();
}
int main()
{
Read();
Solve();
Write();
return 0;
}