Cod sursa(job #1144934)

Utilizator laurageorgescuLaura Georgescu laurageorgescu Data 17 martie 2014 19:04:51
Problema Oite Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<fstream>
#include<algorithm>
#include<vector>

using namespace std;

ifstream fin( "oite.in" );
ofstream fout( "oite.out" );

const int nmax = 1030;
const int mod = 666013;
int a[ nmax ];

vector <int> h[ mod ];

int main()
{
    int n, s, key, x;
    long long sol;
    fin>>n>>s;
    for( int i = 0; i < n; ++ i ) {
        fin>>a[i];
    }
    sort( a, a + n );

    sol = 0;
    for( int i = 0; i < n; ++ i ) {
        for( int j = i+1; j < n; ++ j ) {
            key = s - a[i] - a[j];
            if ( key >= 0 ) {
                x = key%mod;
                for( int k = 0; k < (int)h[ x ].size(); ++ k ) {
                    if ( key == h[ x ][ k ] ) {
                        ++ sol;
                    }
                }
            }
        }
        for( int j = i - 1; j > -1; -- j ) {
            x = ( a[i] + a[j] ) % mod;
            h[ x ].push_back( a[i] + a[j] );
        }
    }
    fout<<sol<<'\n';
    fin.close();
    fout.close();
    return 0;
}