Cod sursa(job #961095)

Utilizator primulDarie Sergiu primul Data 11 iunie 2013 17:04:21
Problema Oite Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <vector>
using namespace std;
 
#define in "oite.in"
#define out "oite.out"
#define MOD 4999
#define N 1030
 
typedef vector <int> :: iterator IT;
 
vector <int> HASH[MOD];
int v[N],n, L, sol;
 
int main() {
    ifstream fin (in);
    fin >> n >> L;
    for (int i = 0; i < n; ++i)
        fin >> v[i];
    fin.close();
    for (int i = 0; i < n - 1; ++i) {
        for (int j = i + 1; j < n; ++j)
            if (L - v[j] - v[i] >= 0) {
                int x = L - v[j] - v[i], k = x % MOD;
                for (IT it = HASH[k].begin(); it != HASH[k].end(); ++it)
                    if (*it == x)
                        sol++;
            }              
        for (int j = 0; j < i; ++j)
            HASH[(v[j] + v[i]) % MOD].push_back (v[j] + v[i]);
    }
    ofstream fout (out);
    fout << sol;
    fout.close();
    return 0;
}