Cod sursa(job #2204201)

Utilizator circeanubogdanCirceanu Bogdan circeanubogdan Data 14 mai 2018 22:53:22
Problema Oite Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <fstream>
#include <vector>
#define DIM 1030
#define MOD 666013

using namespace std;

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

long long n, s, oaie[DIM];

long long mods;

vector<pair<long, long> > Hash[MOD + 10];

int main(int argc, const char * argv[]) {
    in>>n>>s;
    for(int i = 1; i <= n; ++ i)
        in>>oaie[i];
    for(int i = 1; i <= n; ++ i){
        for(int j = i + 1; j <= n; ++ j){
            long long sCurr = s - oaie[i] - oaie[j];
            if(sCurr > 0 && Hash[sCurr % MOD].size()){
                for(auto it : Hash[sCurr % MOD]){
                    if(it.first == sCurr)
                        mods += it.second;
                }
            }
        }
        for(int j = 1; j < i; ++ j){
            long long sCurr = oaie[i] + oaie[j];
            int ok = 0;
            if(sCurr > 0 && Hash[sCurr % MOD].size()){
                for(auto it : Hash[sCurr % MOD]){
                    if(it.first == sCurr){
                        ++ it.second;
                        ok = 1;
                    }
                }
            }
            if(!ok)
                Hash[sCurr % MOD].push_back({sCurr, 1});
        }
    }
    out<<mods;
    return 0;
}