Cod sursa(job #2740926)

Utilizator DragosC1Dragos DragosC1 Data 14 aprilie 2021 19:44:17
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <cmath>
#include <fstream>
#include <vector>
#include <iostream>
#include <unordered_map>
#include <map>
#include <queue>
using namespace std;

struct tripla {
    int x, y, z;
};

int n, S;
int v[101];
unordered_map<int, tripla> mp;
bool ok = 0;
int rez[7];

void read() {
    int i;
    ifstream f("loto.in");
    f >> n >> S;
    for (i = 1; i <= n; i++) 
        f >> v[i];
    f.close();
}

void solve() {
    int i, j, k;
    for (i = 1; i <= n; i++)
        for (j = i; j <= n; j++)
            for (k = j; k <= n; k++) 
                mp[v[i] + v[j] + v[k]] = {i, j, k};
    
    for (auto it : mp) 
        if (mp.find(S - it.first) != mp.end()) {
            rez[1] = it.second.x, rez[2] = it.second.y, rez[3] = it.second.z;
            rez[4] = mp[S - it.first].x, rez[5] = mp[S - it.first].y, rez[6] = mp[S - it.first].z;
            ok = 1;
            break;
        }
}

void output() {
    ofstream g("loto.out");
    if (!ok)
        g << -1;
    else {
        int i;
        for (i = 1; i <= 6; i++)
            g << v[rez[i]] << ' ';
    }
    g.close();
}   

int main() {
    read();
    solve();
    output();   
    return 0;
}