Cod sursa(job #1172480)

Utilizator alex_bucevschiBucevschi Alexandru alex_bucevschi Data 17 aprilie 2014 16:10:42
Problema Loto Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <cstdio>
#include <vector>
#include <algorithm>
#define P pair<pair<int,int>,pair<int,int> >
using namespace std;
vector<P>S;
vector<P>::iterator it,itt;
P aux;
int i,j,k,n,s,suma,a[110];
bool crit(P a,P b)
{
    return (a.first.first<b.first.first);
}
void construieste()
{
    itt=lower_bound(S.begin(),S.end(),aux,crit);
    printf("%d %d %d %d %d %d",it->first.second,it->second.first,it->second.second,itt->first.second,itt->second.first,itt->second.second);

}
int main()
{
    freopen("loto.in","r",stdin);
    freopen("loto.out","w",stdout);
    scanf("%d%d",&n,&s);
    for(i=1;i<=n;i++)
        scanf("%d",&a[i]);
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            for(k=1;k<=n;k++)
            {
                suma=a[i]+a[j]+a[k];
                S.push_back(make_pair(make_pair(suma,a[i]),make_pair(a[j],a[k])));
            }
    sort(S.begin(),S.end(),crit);

    for(it=S.begin();it!=S.end();it++)
    {
        aux=*it;
        aux.first.first=s-it->first.first;
        if(binary_search(S.begin(),S.end(),aux,crit))
        {
            construieste();
            return 0;
        }
    }
    printf("-1");
    return 0;
}