Pagini recente » Cod sursa (job #2931374) | Cod sursa (job #1323871) | Cod sursa (job #2612244) | Cod sursa (job #2416622) | Cod sursa (job #1335783)
#include <fstream>
#include <vector>
using namespace std;
ifstream is("oite.in");
ofstream os("oite.out");
#define MOD 666013
int N, x[1026], Sum, S, Sum2, Sol, Gate;
bool Found;
vector <pair<int,int> > H[MOD+1];
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 = 1LL* S - 1LL *( x[i] + x[j] );
if ( Sum < 0 ) continue;
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 = 1LL* (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();
}