Cod sursa(job #2152864)

Utilizator DruffbaumPopescu Vlad Druffbaum Data 5 martie 2018 20:39:30
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <cstdio>
#include <unordered_map>

const int MAXN = 1e2;

struct M {
  int x, y, z;
};

std::unordered_map <int, M> h;
int v[MAXN + 1];

int main() {
  FILE *fin, *fout;
  int n, s, x, y, z, x2, y2, z2;
  bool flag;
  fin = fopen("loto.in", "r");
  fscanf(fin, "%d%d", &n, &s);
  for (int i = 1; i <= n; ++i) {
    fscanf(fin, "%d", &v[i]);
  }
  fclose(fin);
  flag = 0;
  for (int i = 1; i <= n && !flag; ++i) {
    for (int j = 1; j <= n && !flag; ++j) {
      for (int k = 1; k <= n && !flag; ++k) {
        h[v[i] + v[j] + v[k]] = {v[i], v[j], v[k]};
        if (h.find(s - v[i] - v[j] - v[k]) != h.end()) {
          flag = 1;
          x = h[v[i] + v[j] + v[k]].x;
          y = h[v[i] + v[j] + v[k]].y;
          z = h[v[i] + v[j] + v[k]].z;
          x2 = h[s - v[i] - v[j] - v[k]].x;
          y2 = h[s - v[i] - v[j] - v[k]].y;
          z2 = h[s - v[i] - v[j] - v[k]].z;
        }
      }
    }
  }
  fout = fopen("loto.out", "w");
  if (!flag) {
    fprintf(fout, "-1\n");
  } else {
    fprintf(fout, "%d %d %d %d %d %d\n", x, y, z, x2, y2, z2);
  }
  fclose(fout);
  return 0;
}