Cod sursa(job #531071)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 8 februarie 2011 21:13:49
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <stdio.h>
#include <algorithm>

using namespace std;

int n,s,v[101],d[1000001],ind[1000001],x[3][1000001];

inline int cmp(int i, int j)
{
    return d[i]<d[j];
}

int main()
{
    int i,j,k,l,r;
    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=1;j<=n;++j)
            for (k=1;k<=n;++k)
            {
                d[(i-1)*n*n+(j-1)*n+k-1]=v[i]+v[j]+v[k];
                x[0][(i-1)*n*n+(j-1)*n+k-1]=i;
                x[1][(i-1)*n*n+(j-1)*n+k-1]=j;
                x[2][(i-1)*n*n+(j-1)*n+k-1]=k;
                ind[(i-1)*n*n+(j-1)*n+k-1]=(i-1)*n*n+(j-1)*n+k-1;
            }
    sort(ind,ind+n*n*n,cmp);
    l=0;r=n*n*n-1;
    while ((l<r)&&(d[ind[l]]+d[ind[r]]!=s))
        if (d[ind[l]]+d[ind[r]]>s) --r;
        else ++l;
    if (d[l]+d[r]!=s) printf("-1");
    else printf("%d %d %d %d %d %d",x[0][ind[l]],x[1][ind[l]],x[2][ind[l]],x[0][ind[r]],x[1][ind[r]],x[2][ind[r]]);
    return 0;
}