Pagini recente » Cod sursa (job #2101246) | Cod sursa (job #1567780) | Cod sursa (job #2341369) | Cod sursa (job #488150) | Cod sursa (job #1508770)
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
#define Nmax 1030
#define Key 6551
FILE *f = fopen ( "oite.in", "r" );
FILE *g = fopen ( "oite.out", "w" );
int v[Nmax];
vector < int > Hash[Key];
int main(){
int N, S;
long long sol = 0;
vector < int > :: iterator it;
fscanf ( f, "%d%d", &N, &S );
for ( int i = 1; i <= N; ++i )
fscanf ( f, "%d", &v[i] );
for ( int i = 1; i <= N; ++i ){
for ( int j = i+1; j <= N; ++j ){
int sum = S - v[i] - v[j];
if ( sum < 0 )
continue;
for ( it = Hash[sum%Key].begin(); it != Hash[sum%Key].end(); ++it )
sol += ( *it == sum );
}
for ( int j = 1; j < i; ++j ){
int sum = v[i] + v[j];
Hash[sum%Key].push_back ( sum );
}
}
fprintf ( g, "%lld", sol );
return 0;
}