Pagini recente » Cod sursa (job #1602158) | Cod sursa (job #3033181) | Cod sursa (job #3033166) | Cod sursa (job #1789711) | Cod sursa (job #2755766)
#include <fstream>
#include <unordered_map>
#include <vector>
using namespace std;
ifstream in ("oite.in");
ofstream out ("oite.out");
const int mod = 666137;
vector < pair < long long, int > > H[mod];
void Insert ( long long x )
{
int i = x % mod;
for ( int j = 0 ; j < H[i].size () ; ++j )
if ( H[i][j].first == x )
{
H[i][j].second++;
return;
}
H[i].push_back ( { x, 1 } );
}
int Find ( long long x )
{
int i = x % mod;
for ( int j = 0 ; j < H[i].size () ; ++j )
if ( H[i][j].first == x )
return H[i][j].second;
return 0;
}
int c, l;
int v[1137];
//unordered_map < long long, int > m;
int sorin;
int main()
{
in >> c >> l;
for ( int i = 1 ; i <= c ; ++i )
in >> v[i];
for ( int i = 2 ; i <= c ; ++i )
{
for ( int j = i + 1 ; j <= c ; ++j )
{
if ( v[i] + v[j] > l )
continue;
sorin += Find ( l - v[i] - v[j] );
}
for ( int j = 1 ; j <= i - 1 ; ++j )
Insert ( v[i] + v[j] );
}
out << sorin;
return 0;
}