Cod sursa(job #3120749)

Utilizator unomMirel Costel unom Data 8 aprilie 2023 14:10:47
Problema Loto Scor 15
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <fstream>

using namespace std;

ifstream f("loto.in");
ofstream g("loto.out");
int n, s, v[105];
int w[1000005];
int x[1000005];
int y[1000005];
int z[1000005];
int ind;

int main()
{
    f>>n>>s;
    for(int i = 1; i<=n; i++)
    {
        f>>v[i];
    }
    for(int i = 1; i<=n; i++)
    {
        for(int j = i; j<=n; j++)
        {
            for(int k = j; k<=n; k++)
            {
                if(v[i] + v[j] + v[k] <= s)
                {
                    ind++;
                    w[ind] = v[i] + v[j] + v[k];
                    x[ind] = v[i];
                    y[ind] = v[j];
                    z[ind] = v[k];
                }
            }
        }
    }

    int ok = 0;
    for(int i = 1; i<=ind && ok == 0; i++)
    {
        int st = 1;
        int dr = ind;
        int m;
        while(st <= dr)
        {
            m = (st + dr) / 2;
            if(w[i] + w[m] == s)
            {
                g<<x[i]<<" "<<y[i]<<" "<<z[i]<<" "<<x[m]<<" "<<y[m]<<" "<<z[m];
                ok = 1;
                break;
            }

            if(w[i] + w[m] > s)
            {
                dr = m - 1;
            }
            else
            {
                st = m + 1;
            }
        }
    }

    if(ok == 0)
    {
        g<<-1;
    }

    return 0;
}