Cod sursa(job #1760504)

Utilizator CalarisPredut Denis Stefanita Calaris Data 20 septembrie 2016 21:20:25
Problema Loto Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.5 kb
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

#define MAX 1000005

int values[MAX];

int main()
{
    fstream f("loto.in",ios::in);
    ofstream g("loto.out");
    vector<int> vect;
    int x,N,S,M,i,j,k,m,indice=0;
    bool ok1 = 0, ok2 = 0;

    f>>N>>S;
    M= N;
    do
        {
            f>>x;
            vect.push_back(x);
        }while(--M);

    for(i=1;i<=N;++i)
        for(j=i;j<=N;++j)
          for(k=j;k<=N;++k)
                values[++indice]=vect[i] + vect[j] + vect[k];


    sort(values+1,values+indice+1);


    for(i=1;i<=indice;++i)
        {

        if(binary_search(values+1,values+indice+1,S-values[i]))
        {
           m = S-values[i];
           for(x=1;x<=N;++x)
             for(j=x;j<=N;++j)
               for(k=j;k<=N;++k)
                    {
                    if(ok1 == 1 && ok2 == 1) return 0;
                    if(!ok1)
                        if(vect[x]+vect[j]+vect[k] == values[i])
                        {
                        g<<vect[x]<<" "<<vect[j]<<" "<<vect[k]<<" ";
                        ok1 = 1;
                        }
                     if(!ok2)
                        if(vect[x]+vect[j]+vect[k] == m)
                        {
                        g<<vect[x]<<" "<<vect[j]<<" "<<vect[k]<<" ";
                        ok2 = 1;
                        }
                    }
             return 0;
            }

        }
    g<<"-1";

    return 0;
}