Cod sursa(job #1854282)

Utilizator antracodRadu Teodor antracod Data 22 ianuarie 2017 15:53:14
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.67 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;

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

const int NMAX = 100;
int v[NMAX+1];
int a[NMAX*NMAX*NMAX+1];
int n,s;

int main()
{

    in>>n>>s;
    for(int i=1; i<=n; i++)
    {
        in>>v[i];
    }
    int x=1;
    for(int i=1; i<=n; i++)
        for(int j=1; j<=n; j++)
            for(int k=1; k<=n; k++)
            {
                a[x]=v[i]+v[j]+v[k];
                x++;
            }
    int p=n*n*n,flag=0;
    int st=1,dr=p;
    sort(a+1,a+p+1);

    for(int i=1; i<=p; i++)
    {
        if(s-a[st]==a[dr])
        {
            flag=1;
            break;
        }
        else if(s-a[st]<a[dr])
        {
            dr--;
        }
        else
        {
            st++;
        }
    }
    if(flag==0)
        out<<-1;
    else
    {
        for(int i=1; i<=n; i++)
            for(int j=1; j<=n; j++)
                for(int k=1; k<=n; k++)
                {
                    if(v[i]+v[j]+v[k]==a[st])
                    {
                        out<<v[i]<<" "<<v[j]<<" "<<v[k]<<" ";
                        for(int i=1; i<=n; i++)
                            for(int j=1; j<=n; j++)
                                for(int k=1; k<=n; k++)
                                {
                                    if(v[i]+v[j]+v[k]==a[dr])
                                    {
                                        out<<v[i]<<" "<<v[j]<<" "<<v[k]<<" ";
                                        return 0;
                                    }
                                }
                    }
                }
    }
}