Cod sursa(job #2223165)

Utilizator YusyBossFares Yusuf YusyBoss Data 19 iulie 2018 11:41:55
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.41 kb
#include <fstream>
#include <algorithm>

using namespace std;

int v[103];

struct suma {
  int s;
  int a, b, c;
};

bool cmp (suma A, suma B) {
  return A.s < B.s;
}

suma sum[1000003];

int cb(int x, int m) {
  int st, dr, mij;
  st = 0;
  dr = m;
  while (st <= dr) {
    mij = (st + dr) / 2;
    if (sum[mij].s > x)
      dr = mij - 1;
    else if (sum[mij].s < x)
      st = mij + 1;
    else
      return mij;
  }
  return -1;
}

int main() {
  ifstream cin ("loto.in");
  ofstream cout ("loto.out");
  int n, s, i, j, k, m, x, a;
  cin >> n >> s;
  for (i = 0; i < n; i++)
    cin >> v[i];
  m = 0;
  for (i = 0; i < n; i++) {
    for (j = i; j < n; j++) {
      for (k = j; k < n; k++) {
        sum[m].s = v[i] + v[j] + v[k];
        sum[m].a = v[i];
        sum[m].b = v[j];
        sum[m].c = v[k];
        m++;
      }
    }
  }
  sort (sum, sum + m, cmp);
  int st, dr;
  st = 0;
  dr = m - 1;
  while (st <= dr) {
    while (st <= dr && sum[st].s + sum[dr].s > s)
      dr--;
    if (sum[st].s + sum[dr].s == s) {
      i = st;
      a = dr;
      cout << sum[i].a;
      cout << " ";
      cout << sum[i].b;
      cout << " ";
      cout << sum[i].c;
      cout << " ";
      cout << sum[a].a;
      cout << " ";
      cout << sum[a].b;
      cout << " ";
      cout << sum[a].c;
      return 0;
    }
    st++;
  }
  cout << -1;
  return 0;
}