Cod sursa(job #1026459)

Utilizator dobrebogdanDobre Bogdan Mihai dobrebogdan Data 11 noiembrie 2013 17:28:52
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
struct sp
{
    unsigned a,b,c,d;
}v[1000005];
unsigned v2[105];
bool cmp(sp w, sp e)
{
    return w.d<e.d;
}
int main()
{
    freopen("loto.in","r",stdin);
    freopen("loto.out","w",stdout);
    unsigned n,s,i,j,q,m=0,st,dr,mi;
    scanf("%u%u",&n,&s);
    for(i=1;i<=n;i++)
    {
        scanf("%u",&v2[i]);
        for(j=i;j>0;j--)
            for(q=j;q>0;q--)
        {
            m++;
            v[m].d=v2[i]+v2[j]+v2[q];
            v[m].a=i;
            v[m].b=j;
            v[m].c=q;
        }
    }
    sort(v+1,v+m+1,cmp);
    for(i=1;i<=m;i++)
{
    q=s-v[i].d;
    st=i;
    dr=m;
    while(st<=dr)
    {
        mi=(st+dr)/2;
        if(v[mi].d==q)
            break;
        if(v[mi].d>q)
            dr=mi-1;
            else
                st=mi+1;
    }
    if(st<=dr)
    {
        v2[1]=v[i].a;v2[2]=v[i].b;v2[3]=v[i].c;v2[4]=v[mi].a;v2[5]=v[mi].b;v2[6]=v[mi].c;
        sort(v2+1,v2+7);
        printf("%u %u %u %u %u %u\n",v2[1],v2[2],v2[3],v2[4],v2[5],v2[6]);
        break;
    }
}
if(i>m)
    printf("-1\n");
    return 0;
}