Cod sursa(job #1144298)

Utilizator Athena99Anghel Anca Athena99 Data 16 martie 2014 21:12:35
Problema Oite Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <algorithm>
#include <fstream>
#include <vector>

using namespace std;

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

const int mod= 666013;
const int nmax= 1024;

int n, sum, sol;
int c[nmax+1];
vector <int> v[mod];

void check( int x ) {
    for ( vector <int>::iterator it= v[x%mod].begin(); it!=v[x%mod].end(); ++it ) {
        if ( *it==x ) {
            ++sol;
        }
    }
}

int main(  ) {
    fin>>n>>sum;
    for ( int i= 1; i<=n; ++i ) {
        fin>>c[i];
    }
    sort( c+1, c+n+1 );

    for ( int i= 1; i<=n; ++i ) {
        for ( int j= i+1; j<=n; ++j ) {
            check(sum-c[i]-c[j]);
        }

        for ( int j= i-1; j>=1; --j ) {
            v[(c[i]+c[j])%mod].push_back(c[i]+c[j]);
        }
    }
    fout<<sol<<"\n";

    return 0;
}