Cod sursa(job #2748430)

Utilizator catarau.biancaCatarau Bianca Mihaela catarau.bianca Data 30 aprilie 2021 18:00:43
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
#include <algorithm>
using namespace std;
int n,s,v[101],a[171701];
ifstream f("loto.in");
ofstream g("loto.out");

bool comp (int a,int b)
{
	return a<b;
}

void exe(int c)
{
	int i,j,k;
    for (i=1;i<=n;i++)
        for (j=i;j<=n;j++)
            for (k=j;k<=n;k++)
                if (v[i]+v[j]+v[k]==c)
				{
                    g<<v[i]<<" "<<v[j]<<" "<<v[k]<<" ";
                    return;
                }
}

bool cautare(int m)
{
    int i,p=1<<22,sum=s-a[m];
    for (i=0;p;p>>=1)
        if (i+p<=v[0] && a[i+p]<=sum) i+=p;
    if (a[i]==sum)
	{
        exe(a[i]);
        exe(a[m]);
        return true;
    }
    return false;
}

int main ()
{
    int i,j,k;
	f>>n>>s;
    for (i=1;i<=n;i++)
        f>>v[i];
    for (i=1;i<=n;i++)
        for (j=i;j<=n;j++)
            for (k=j;k<=n;k++)
                a[++v[0]]=v[i]+v[j]+v[k];
	sort(a+1,a+v[0]+1,comp);
    for (i=1;i<=v[0];i++)
        if (cautare(i)) return 0;
    g<<"-1\n";
    return 0;
}