Cod sursa(job #1726599)

Utilizator petrooPetru G petroo Data 8 iulie 2016 14:31:15
Problema Loto Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

struct s_elem
{
    int s,x1,x2,x3;
};
vector<int> v;
vector<s_elem> val;

inline bool comp(s_elem X, s_elem Y)
{
    return X.s < Y.s;

}

int main()
{
    int n,i,j,k;
    long s,x;
    ifstream f("loto.in");
    ofstream g("loto.out");
    f>>n;
    f>>s;
    for(i = 1; i <= n; i++)
        f>>x,v.push_back(x);
    f.close();
    v.clear();
    for(i = 0; i < n; i++)
        for(j = i; j < n; j++)
            for(k = j; k < n; k++)
                val.push_back({v[i]+v[j]+v[k], v[i], v[j], v[k]});
    sort(val.begin(),val.end(),comp);
    for(i = 0; i <val.size()-1; i++ )
    {
        int caut = s-val[i].s;
        int hi = val.size()-1,lo = i+1;
        while( hi - lo >1)
        {
            int mid = lo + (hi-lo)/2;
            if(val[mid].s < caut)
                lo = mid;
            else if(val[mid].s > caut)
                hi = mid;
            else
            {
                v.push_back(val[i].x1);v.push_back(val[i].x2);v.push_back(val[i].x3);v.push_back(val[mid].x1);v.push_back(val[mid].x2);v.push_back(val[mid].x3);
                sort(v.begin(),v.end());
                g<<v[0]<<" "<<v[1]<<" "<<v[2]<<" "<<v[3]<<" "<<v[4]<<" "<<v[5];
                return 0;
            }

        }

    }
    g<<"-1";
    g.close();
    return 0;
}