Cod sursa(job #2748069)

Utilizator Zamolxis25Sebastian Gradinaru Zamolxis25 Data 29 aprilie 2021 21:43:31
Problema Loto Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.93 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <unordered_map>
#include <set>

using namespace std;

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

struct treiValori{
    int v1,v2,v3;
}val;

vector <int> v;
vector<int> primeleTrei;
unordered_map <int, treiValori> sume;
int N, S, x, sum;

bool loop(){
    for(int i = 0; i < N; i++){
        for(int j = i; j < N; j++) {
            for (int k = j; k < N; k++) {
                sum = v[i] + v[j] + v[k];
                if (S > sum) {
                    val.v1 = v[i];
                    val.v2 = v[j];
                    val.v3 = v[k];
                    sume[sum] = val;
                }
                if (S > sum && sume.find(S - sum) != sume.end()) {
                    fout << v[i] << " " << v[j] << " " << v[k] << " " << sume[S-sum].v1 << " " << sume[S-sum].v2 << " " << sume[S-sum].v3 << " ";

                    return true;
                }
            }
        }
    }
    return false;
}

int main(){
    fin >> N >> S;
    for(int i = 0; i < N; i++){
        fin >> x;
        v.push_back(x);
    }

//    bool ok = false;
//
//    for(int i = 0; i < N; i++)
//        for(int j = i; j < N; j++)
//            for(int k = j; k < N; k++){
//                sum = v[i] + v[j] + v[k];
//                if(S > sum){
//                    val.v1 = v[i];
//                    val.v2 = v[j];
//                    val.v3 = v[k];
//                    sume[sum] = val;
//                }
//
//                if(S > sum && sume.find(S - sum) != sume.end()){
//                    fout << v[i] << " " << v[j] << " " << v[k] << " " << sume[S-sum].v1 << " " << sume[S-sum].v2 << " " << sume[S-sum].v3 << " ";
//                    i = N;
//                    j = i;
//                    k = j;
//
//                    ok = true;
//                }
//            }
//
//
//    if(ok == false)
//
//        fout << -1;

    if(loop() == false){
        cout << -1;
    }

    return 0;
}