Cod sursa(job #1508770)

Utilizator BLz0rDospra Cristian BLz0r Data 22 octombrie 2015 22:35:25
Problema Oite Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#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;
}