Cod sursa(job #923971)

Utilizator tudgal1001Profir Tudor tudgal1001 Data 23 martie 2013 23:36:45
Problema Loto Scor 35
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.44 kb
#include<algorithm>
#include<cstdio>
#include<vector>
using namespace std;

struct ss { int sum,a,b,c; };
vector<ss> sume;
ss aux;
int n,v[105],cnt;

bool cmp (ss aa, ss bb)
{
    return aa.sum<bb.sum;
}

void proces ()
{
    int i,j,k;
    for (i=1; i<=n; i++)
        if (v[i]!=-1)
            for (j=1; j<=n; j++)
                if (v[j]!=-1)
                    for (k=1; k<=n; k++)
                        if (v[k]!=-1)
                        {
                            aux.sum=v[i]+v[j]+v[k];
                            aux.a=v[i], aux.b=v[j], aux.c=v[k];
                            sume.push_back(aux), cnt++;
                        }
}

int main ()
{
    int s,i,st,dr,mij;
    freopen("loto.in","r",stdin);
    freopen("loto.out","w",stdout);
    scanf("%d%d",&n,&s);
    for (i=1; i<=n; i++)
        scanf("%d",&v[i]);
    sort(v+1,v+n+1);
    for (i=2; i<=n; i++)
        if (v[i]==v[i-1])
            v[i-1]=-1;
    proces();
    sort(sume.begin(),sume.end(),cmp);
    for (i=0; i<cnt; i++)
    {
        st=0, dr=cnt-1;
        while (st<=dr)
        {
            mij=(st+dr)/2;
            if (sume[mij].sum==s-(sume[i].sum))
            {
                printf("%d %d %d %d %d %d\n",sume[i].a,sume[i].b,sume[i].c,sume[mij].a,sume[mij].b,sume[mij].c);
                return 0;
            }
            else if (sume[mij].sum<s-(sume[i].sum))
                st=mij+1;
            else dr=mij-1;
        }
    }
    printf("-1\n");
    return 0;
}