Cod sursa(job #2588891)

Utilizator maramihaliMara Mihali maramihali Data 25 martie 2020 16:09:02
Problema Abc2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

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

struct info
{
    int x, y, z, sum;
};

int v[128], n, s;
char found;
info sume[1000001];
int cnt;

bool cmp(info a, info b)
{
    return a.sum < b.sum;
}

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

void solve()
{
    for(int i = 1; i<= n; i++)
        for(int j = i; j <= n; j++)
            for(int k = j; k <= n; k++)
            {
                cnt++;
                sume[cnt] = {v[i], v[j], v[k], v[i]+v[j]+v[k]};
            }
    sort(sume+1, sume+cnt+1, cmp);
    int a = 1, b = cnt;
    while(a <= b)
    {
        if(sume[a].sum+sume[b].sum == s)
        {
            found = 1;
            out << sume[a].x << " " << sume[a].y << " " << sume[a].z << " " << sume[b].x << " " << sume[b].y << " " << sume[b].z;
            return;
        }
        else if(sume[a].sum + sume[b].sum < s)
            a++;
        else
            b--;
    }
}

int main()
{
    citire();
    solve();
    if (!found)
        out << -1;
}