Cod sursa(job #555498)

Utilizator acelasi7Tudor Maxim acelasi7 Data 15 martie 2011 15:52:29
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.37 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
#define ll long long
#define nrn 105

struct neu{ll s,a,b,c;};
ll V[nrn];
neu suma[nrn*nrn*nrn];

FILE *in=fopen("loto.in","r"),*out=fopen("loto.out","w");

int cmp(neu x,neu y)
{
    return x.s<y.s;
}
int main()
{
    int ln=0,i,j,z,lf,rt,mid,n,k;
    fscanf(in,"%d %d",&n,&k);
    for(i=1;i<=n;++i)
        fscanf(in,"%lld",&V[i]);
    for(i=1;i<=n;++i)
        for(j=i;j<=n;++j)
            for(z=j;z<=n;++z)
            {
                ln++;
                suma[ln].a=V[i];
                suma[ln].b=V[j];
                suma[ln].c=V[z];
                suma[ln].s=V[i]+V[j]+V[z];
            }
    sort(suma+1,suma+1+ln,cmp);
    for(i=1;i<=ln;++i)
    {
        lf=1;rt=ln;
        while(lf<=rt)
        {
            mid=(lf+rt)/2;
            if(suma[mid].s+suma[i].s==k)
            {
                fprintf(out,"%lld ",suma[i].a);
                fprintf(out,"%lld ",suma[i].b);
                fprintf(out,"%lld ",suma[i].c);
                fprintf(out,"%lld ",suma[mid].a);
                fprintf(out,"%lld ",suma[mid].b);
                fprintf(out,"%lld\n",suma[mid].c);
                return 0;
            }
            if(suma[mid].s+suma[i].s<k)
                lf=mid+1;
            else rt=mid-1;
        }
    }
    fprintf(out,"-1\n");
    return 0;
}