Cod sursa(job #3239454)

Utilizator MrPuzzleDespa Fabian Stefan MrPuzzle Data 5 august 2024 17:17:32
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <bits/stdc++.h>

using namespace std;

//ifstream f("in.in");
//ofstream g("out.out");

ifstream f("loto.in");
ofstream g("loto.out");

int n,s;
int v[101];

int ss;
int x[6];

bool ok;

struct three{
    bool exists = 0;
    int a;
    int b;
    int c;
};

unordered_map<int,three> mp;

void bkt(int pas){

    if(pas == 4){

        //cout<<v[x[1]]<<" "<<v[x[2]]<<" "<<v[x[3]]<<'\n';

        if(!mp[ss].exists){
            mp[ss] = {1,v[x[1]],v[x[2]],v[x[3]]};
        }

        if(mp[s-ss].exists){

            g<<mp[ss].a<<" "<<mp[ss].b<<" "<<mp[ss].c<<" ";
            g<<mp[s-ss].a<<" "<<mp[s-ss].b<<" "<<mp[s-ss].c<<" ";

            //cout<<"!!";
            ok = 1;
        }

        return;
    }

    if(ok){
        return;
    }

    for(int i = x[pas-1];i<=n;i++){
        ss += v[i];
        x[pas] = i;
        bkt(pas+1);
        ss -= v[i];
    }

}

signed main()
{

    f>>n>>s;
    for(int i=1;i<=n;i++){
        f>>v[i];
    }

    sort(v+1,v+n+1);

    x[0] = 1;
    ss = 0;
    bkt(1);

    if(!ok){
        g<<-1;
    }

    return 0;
}