Cod sursa(job #1707837)

Utilizator Tiberiu02Tiberiu Musat Tiberiu02 Data 25 mai 2016 22:31:08
Problema Loto Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
# include <stdio.h>
# include <stdlib.h>

# include <algorithm>

# define MAX_N 101
# define infinit 100000001

int v[MAX_N];

struct pereche {
    int a, b, c;
    int s;
} p[MAX_N * MAX_N * MAX_N];

inline int cmp( struct pereche a, struct pereche b ) {
    return a.s <= b.s;
}

int main() {
    FILE *fin = fopen( "loto.in", "r" ), *fout = fopen( "loto.out", "w" );

    int n, i, j, k, m, S;

    fscanf( fin, "%d%d", &n, &S );

    for ( i = 1; i <= n; i ++ )
        fscanf( fin, "%d", &v[i] );

    m = 0;
    for ( i = 1; i <= n; i ++ )
        for ( j = 1; j <= n; j ++ )
            for ( k = 1; k <= n; k ++ ) {
                p[m].a = v[i];
                p[m].b = v[j];
                p[m].c = v[k];

                p[m].s = v[i] + v[j] + v[k];

                m ++;
            }


    std::sort( p, p + m, cmp );

    j = m - 1;
    i = -1;
    while ( i < m - 1 && i < j && p[i].s + p[j].s != S ) {
        i ++;
        while ( i < j && p[i].s + p[j].s > S )
            j --;
    }

    if ( p[i].s + p[j].s == S )
        fprintf( fout, "%d %d %d %d %d %d", p[i].a, p[i].b, p[i].c, p[j].a, p[j].b, p[j].c );
    else
        fprintf( fout, "-1" );

    fclose( fin );
    fclose( fout );

    return 0;
}