Cod sursa(job #2035121)

Utilizator MoodyFaresFares Mohamad MoodyFares Data 8 octombrie 2017 22:21:34
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <cstdio>
#include <unordered_map>

const int MAX_N = 100;

int v[5 + MAX_N];

int main() {
  freopen("loto.in", "r", stdin);
  freopen("loto.out", "w", stdout);
  
  int N, S;
  scanf("%d%d", &N, &S);
  for (int i = 1; i <= N; i++) {
    int x;
    scanf("%d", &x);
    v[i] = x;
  }
  std::unordered_map<int, int> sePoate;
  for (int i = 1; i <= N; i++) {
    for (int j = 1; j <= N; j++) {
      for (int k = 1; k <= N; k++) {
        int s = v[i] + v[j] + v[k];
        sePoate[s] = 1;
      }
    }
  }
  int x1 = 0, x2 = 0, x3 = 0;
  int s1 = 0;
  bool ok = false;
  for (int i = 1; i <= N; i++) {
    for (int j = 1; j <= N; j++) {
      for (int k = 1; k <= N; k++) {
        int s = v[i] + v[j] + v[k];
        if (sePoate[S - s]) {
          x1 = v[i];
          x2 = v[j];
          x3 = v[k];
          s1 = S - s;
          ok = true;
        }
      }
    }
  }
  if (!ok) {
    printf("-1\n");
    return 0;
  }
  for (int i = 1; i <= N; i++) {
    for (int j = 1; j <= N; j++) {
      for (int k = 1; j <= N; k++) {
        int s = v[i] + v[j] + v[k];
        if (s == s1) {
          printf("%d %d %d %d %d %d\n", x1, x2, x3, v[i], v[j], v[k]);
          return 0;
        }
      }
    }
  }
  return 0;
}