Cod sursa(job #1481439)

Utilizator adiXMGemene Adrian adiXM Data 4 septembrie 2015 15:21:03
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.4 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
const int NMAX=105;
int a[NMAX];
int v[NMAX*NMAX*NMAX];
int main()
{
    int n,s,na=0;
    f>>n>>s;
    for(int i=1;i<=n;i++)
        f>>a[i];
    for(int i=1;i<=n;i++)
        for(int j=i;j<=n;j++)
            for(int k=j;k<=n;k++)
                v[++na]=a[i]+a[j]+a[k];
    sort(v+1,v+na+1);
    int j=na,sum1,sum2;
    bool ok=0;
    for(int i=1;i<=na && v[i]<s;i++)
    {
        int x=s-v[i];
        while(v[j]>x)
            j--;
        if(v[j]==x)
        {
            sum1=x;
            sum2=v[i];
            ok=1;
            break;
        }
    }

    if(ok)
    {
        bool gasit=0;
        for(int i=1;i<=n;i++)
            for(int j=i;j<=n;j++)
                for(int k=j;k<=n && gasit==0;k++)
                    if(sum1==a[i]+a[j]+a[k])
                    {
                        g<<a[i]<<" "<<a[j]<<" "<<a[k]<<" ";
                        gasit=1;
                    }
        gasit=0;
        for(int i=1;i<=n;i++)
            for(int j=i;j<=n;j++)
                for(int k=j;k<=n && gasit==0;k++)
                    if(sum2==a[i]+a[j]+a[k])
                    {
                        g<<a[i]<<" "<<a[j]<<" "<<a[k]<<" ";
                        gasit=1;
                    }
    }
    else
        g<<"-1\n";
    return 0;
}