Pagini recente » Cod sursa (job #1037401) | Cod sursa (job #2584931) | Cod sursa (job #2510883) | Cod sursa (job #2461878) | Cod sursa (job #1335778)
#include <fstream>
#include <vector>
using namespace std;
ifstream is("oite.in");
ofstream os("oite.out");
#define MOD 666013
unsigned long long N, x[1026], Sum, S, Sum2, Sol, Gate;
bool Found;
vector <pair<unsigned long long,int> > H[MOD];
int main()
{
is >> N >> S;
for ( int i = 1; i <= N; ++i )
is >> x[i];
for ( int i = 2; i < N; ++i )
{
for ( int j = i + 1; j <= N; ++j )
{
Sum = S - ( x[i] + x[j] );
Gate = Sum%MOD;
if ( H[Gate].empty() == false )
for ( int k = 0; k < H[Gate].size(); ++k )
{
if ( H[Gate][k].first == Sum )
Sol += H[Gate][k].second;
}
}
for ( int j = 1; j < i; ++j )
{
Sum = x[i] + x[j];
Gate = Sum % MOD;
Found = false;
if ( H[Gate].empty() == false )
for ( int k = 0; k < H[Gate].size(); ++k )
{
if ( H[Gate][k].first == Sum )
{
H[Gate][k].second++;
Found = true;
break;
}
}
if ( Found == false )
H[Gate].push_back(make_pair(Sum,1));
}
}
os << Sol;
is.close();
os.close();
}