Cod sursa(job #2740658)

Utilizator mirceaisherebina mircea mirceaishere Data 13 aprilie 2021 18:58:27
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.65 kb
#include <fstream>
#include <unordered_map>

using namespace std;

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

class ThreeNumbers{

private:

    int x;
    int y;
    int z;

public:

    ThreeNumbers(){

    }

    ThreeNumbers(int x, int y, int z){
        this -> x = x;
        this -> y = y;
        this -> z = z;
    }

    ThreeNumbers(const ThreeNumbers& threeNumbers){
        x = threeNumbers.x;
        y = threeNumbers.y;
        z = threeNumbers.z;
    }

    ThreeNumbers& operator=(const ThreeNumbers& threeNumbers){
        if (this != &threeNumbers){
            x = threeNumbers.x;
            y = threeNumbers.y;
            z = threeNumbers.z;
        }
        return *this;
    }

    friend ostream& operator<< (ostream&, ThreeNumbers&);

};

ostream& operator<< (ostream& out, ThreeNumbers& threeNumbers){
    out << threeNumbers.x << " " << threeNumbers.y << " " << threeNumbers.z;
    return out;
}


int main() {

    unordered_map <int, ThreeNumbers> hashmap;

    int n, s;
    fin >> n >> s;

    int v[102];

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

    for (int i = 0; i < n; i++){
        for (int j = i; j < n; j++){
            for (int k = j; k < n; k++){
                int currentSum = v[i] + v[j] + v[k];
                hashmap[currentSum] = ThreeNumbers(v[i], v[j], v[k]);
                if (hashmap.find(s - currentSum) != hashmap.end() ){
                    fout << hashmap[currentSum] << " " << hashmap[s - currentSum];
                    return 0;
                }
            }
        }
    }

    fout << "-1";
    return 0;
}