Cod sursa(job #1144418)

Utilizator felixiPuscasu Felix felixi Data 17 martie 2014 07:45:58
Problema Oite Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include<fstream>
#include<vector>

using namespace std;

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

const int NMAX= 1024, MOD= 666013;

int v[ NMAX+1 ];
int n, S, s, sol;

vector <int>  H[ MOD+2 ];

void RASP( int x ) {
    int k= x % MOD;
    for( vector<int>::iterator it=H[k].begin();  it!=H[k].end();  ++it ) {
        if( *it == x )
            sol++;
    }
}

int main()
{

    in >> n >> S;
    for( int i= 1;  i<=n;  ++i ) {
        in >> v[i];
    }

    for( int i= 1;  i<n;  ++i )  {
        for( int j= i+1;  j<=n;  ++j ) {
            if( S >= v[i]+v[j] ) {
                RASP( S-v[i]-v[j] );
            }
        }
        for( int j= i-1;  j>0;  --j ) {
            H[ ( v[i]+v[j] ) % MOD ].push_back( v[i]+v[j] );
        }
    }
    out << sol << '\n';
    return 0;
}