Cod sursa(job #1144772)

Utilizator gedicaAlpaca Gedit gedica Data 17 martie 2014 16:21:06
Problema Oite Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <algorithm>
#include <fstream>
#include <vector>





using namespace std;




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

const int mod= 666013;

int v[1028];
vector <int> H[mod];

int sol;

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

int main(  )
{
    int n, suma;
    in >> n >> suma;

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

    sort( v+1, v+n+1 );

    for ( int i= 1; i<=n; ++i )
    {
        for ( int j= i+1; j<=n; ++j )
        {
            if ( suma >= v[i]+v[j] )
            {
                functie_(suma-v[i]-v[j]);
            }
        }
        for ( int j= i-1; j>=1; --j )
        {
            H[ ( v[i]+v[j] ) % mod ].push_back(v[i]+v[j]);
        }
    }
    out << sol << "\n";
    return 0;
}