Cod sursa(job #2002056)

Utilizator stefan_creastaStefan Creasta stefan_creasta Data 18 iulie 2017 15:24:58
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.42 kb
#include <cstdio>
#include <bitset>
using namespace std;
const int NMAX = 105;
const int N = 300000005;
int v[NMAX];
bitset <N> vf;

int main()
{
    int n, s, i, j, k, i2, j2, k2;
    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 = i;j <= n; ++j) {
            for(k = j;k <= n; ++k) {
                vf[v[i] + v[j] + v[k]] = 1;
            }
        }
    }
    for(i = 1;i <= n; ++i) {
        for(j = i;j <= n; ++j) {
            for(k = j;k <= n; ++k) {
                int sum = v[i] + v[j] + v[k];
                int dif = s - sum;
                if(dif > 0 && dif <= N - 5 && vf[dif]) {
                    printf("%d %d %d ", v[i], v[j], v[k]);
                    for(i2 = 1;i2 <= n; ++i2) {
                        for(j2 = i2;j2 <= n; ++j2) {
                            for(k2 = j2;k2 <= n; ++k2) {
                                int sum2 = v[i2] + v[j2] + v[k2];
                                if(sum2 == dif) {
                                    printf("%d %d %d\n", v[i2], v[j2], v[k2]);
                                    return 0;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    printf("-1\n");
    return 0;
}