Cod sursa(job #1121665)

Utilizator usermeBogdan Cretu userme Data 25 februarie 2014 13:36:27
Problema Loto Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <cstdio>
#include <algorithm>

using namespace std;

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

int n,s,v[101],k;

struct val{
    int x,a,b,c;
};

val c[1000001];

bool sortez(val a,val b){
    return a.x<b.x;
}

int main()
{
    fscanf(f,"%d%d",&n,&s);
    /*n=3;
    s=13;
    v[1]=1;
    v[2]=2;
    v[3]=3;*/
    for ( int i=1;i<=n;++i )
        fscanf(f,"%d",&v[i]);
    for ( int i=1;i<=n;++i )
        for ( int j=1;j<=n;++j )
            for ( int r=1;r<=n;++r ){
                c[++k].x=v[i]+v[j]+v[r];
                c[k].a=v[i];
                c[k].b=v[j];
                c[k].c=v[r];
            }
    sort(c+1,c+k+1,sortez);
    for ( int i=1;i<=k;++i ){
        int p=0;
        for ( int pas=1<<20;pas;pas/=2 )
            if ( p+pas<=k&&c[i].x+c[p+pas].x<=s )p+=pas;
        if ( c[i].x+c[p].x==s ){
            fprintf(h,"%d %d %d %d %d %d",c[i].a,c[i].b,c[i].c,c[p].a,c[p].b,c[p].c);
            return 0;
        }
    }
    fprintf(h,"-1");
    return 0;
}