Cod sursa(job #2282584)

Utilizator adiaioanaAdia R. adiaioana Data 14 noiembrie 2018 09:41:43
Problema Loto Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <fstream>
#include <algorithm>
#include <unordered_map>
using namespace std;
ifstream cin("loto.in");
ofstream cout("loto.out");
struct chestie{
int fr;
long long in[4];
};
unordered_map <long long, chestie>::iterator it;
unordered_map <long long,chestie> m;
long long n,s,s1,s2,i1,i2,i3,i4,i5,i6,sum,v[110],ok1,ok2,mx,w[10],mn;
int main()
{
    cin>>n>>s;
    mn=100000001;
    for(int i=1; i<=n; i++)
        cin>>v[i],mx=max(mx,v[i]),mn=min(mn,v[i]);
    if(mx*6<s||mn*6>s)
    {
        cout<<-1<<'\n';
        return 0;
    }
    for(int i=1; i<=n; i++)
        for(int j=i; j<=n; j++)
            for(int k=j; k<=n; k++)
            {
                sum=v[i]+v[j]+v[k];
                it=m.find(s-sum);
                if(it!=m.end()&&m[s-sum].fr!=0)
                {
                    w[1]=v[m[s-sum].in[1]];
                    w[2]=v[m[s-sum].in[2]];
                    w[3]=v[m[s-sum].in[3]];
                    w[4]=v[i];
                    w[5]=v[j];
                    w[6]=v[k];
                    ok1=1;
                }
                m[sum].fr++;
                m[sum].in[1]=i;m[sum].in[2]=j;m[sum].in[3]=k;
            }
    if(ok1)
    {
        sort(w+1,w+7);
        for(int i=1;i<7;i++)
            cout<<w[i]<<' ';
    }
    else cout<<-1<<'\n';
    return 0;
}