Cod sursa(job #2020156)

Utilizator MoldovanMoldovan Moldovan Data 9 septembrie 2017 14:47:23
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.34 kb
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
    freopen("loto.in","r",stdin);
    freopen("loto.out","w",stdout);
    int n , s , i , nr;
    scanf("%d%d",&n,&s);
    vector<int>v;
    for(i=0;i<n;i++)
    {
        scanf("%d",&nr);
        v.push_back(nr);
    }
    sort(v.begin(),v.end());
    vector<int>::iterator it ,it1,it2,it3,it4,it5,it6;
    it=v.begin();
    it1=v.end()-1;
    if((*it)*6>s)
    {
        printf("-1");
        return 0;
    }
    if((*it1)*6<s)
    {
        printf("-1");
        return 0;
    }
    vector<int>t;
    for(it=v.begin();it!=v.end();it++)
    {
        int s1=*it;
        for(it1=v.begin();it1!=v.end();it1++)
        {
            int s2=s1;
            s2+=*it1;
            for(it2=v.begin();it2!=v.end();it2++)
            {
                int s3=s2;
                s3+=*it2;
                t.push_back(s3);
            }
        }
    }
    sort(t.begin(),t.end());
    for(it=t.begin();it!=t.end();it++)
    {
        bool ok=binary_search(t.begin(),t.end(),s-(*it));
        if(ok)
        {
                for(it3=v.begin();it3!=v.end();it3++)
    {
        int f=0;
        int s1=*it3;
        for(it1=v.begin();it1!=v.end();it1++)
        {
            int s2=s1;
            s2+=*it1;
            for(it2=v.begin();it2!=v.end();it2++)
            {
                int s3=s2;
                s3+=*it2;
                if(s3==(*it))
                {
                    printf("%d %d %d ",*it3,*it2,*it1);
                    f=1;
                }
                if(f)break;
            }
            if(f)break;
        }
        if(f)break;
    }
                    for(it3=v.begin();it3!=v.end();it3++)
    {
        int f=0;
        int s1=*it3;
        for(it1=v.begin();it1!=v.end();it1++)
        {
            int s2=s1;
            s2+=*it1;
            for(it2=v.begin();it2!=v.end();it2++)
            {
                int s3=s2;
                s3+=*it2;
                if(s3==s-(*it))
                {
                    printf("%d %d %d ",*it3,*it2,*it1);
                    f=1;
                }
                if(f)break;
            }
            if(f)break;
        }
        if(f)break;
    }
    return 0;
        }
    }
    printf("-1");
    return 0;
}