Cod sursa(job #318340)

Utilizator ZillaMathe Bogdan Zilla Data 28 mai 2009 08:18:10
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.51 kb
#include <stdio.h>
#include <algorithm>

#define Nmax 100

// PAVEL E PROST -> NU A FACUT COBAI

using namespace std;

struct suma{
        int i,j,k,s;
};

suma b[Nmax*Nmax*Nmax+100];

int v[Nmax+10],n,s,cnt,contor,sum[10];

int cmp (suma a,suma b)
{
    return a.s<b.s;
}

int main()
{
    int i,j,k;
    
    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]);
    for(i=1;i<=n;++i)
        for(j=i;j<=n;++j)
            for(k=j;k<=n;++k)
                {
                    b[++cnt].s=v[i]+v[j]+v[k];
                    b[cnt].i=i;
                    b[cnt].j=j;
                    b[cnt].k=k;
                }
    sort(b+1,b+cnt+1,cmp);
    int st=1,dr=cnt;
    while(st<=dr)
        {
            if(b[st].s+b[dr].s>s)
                --dr;
            else
                if(b[st].s+b[dr].s<s)
                    ++st;
                else
                    {
                        s[++contor]=b[st].i;
                        s[++contor]=b[st].j;
                        s[++contor]=b[st].k;
                        s[++contor]=b[dr].i;
                        s[++contor]=b[dr].j;
                        s[++contor]=b[dr].k;
                        dr=st+1;
                    }
        }
    sort(sum+1,sum+contor+1);
    if(contor==0)
        printf("-1");
    else
        printf("%d %d %d %d %d %d",sum[1],sum[2],sum[3],sum[4],sum[5],sum[6]);
    return 0;    
}