Cod sursa(job #923949)

Utilizator tudgal1001Profir Tudor tudgal1001 Data 23 martie 2013 23:26:07
Problema Loto Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 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];

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

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

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]);
    proces();
    sort(sume.begin(),sume.end(),cmp);
    vector<ss>::iterator it,ff;
    for (it=sume.begin(); it!=sume.end(); ++it)
    {
        st=0, dr=n*n*n-1;
        while (st<=dr)
        {
            mij=(st+dr)/2;
            if (sume[mij].sum==s-(it->sum))
            {
                printf("%d %d %d %d %d %d\n",it->a,it->b,it->c,sume[mij].a,sume[mij].b,sume[mij].c);
                return 0;
            }
            else if (sume[mij].sum<s-(it->sum))
                st=mij+1;
            else dr=mij-1;
        }
    }
    printf("-1\n");
    return 0;
}