Cod sursa(job #2433465)

Utilizator AndreiDumitrescuAndrei Dumitrescu AndreiDumitrescu Data 27 iunie 2019 15:20:48
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <bits/stdc++.h>

using namespace std;

struct bilet {
  int nr1, nr2, nr3, s;
};

ifstream f("loto.in");
ofstream g("loto.out");

bool mycmp(bilet a, bilet b) {
  return a.s < b.s;
}


vector<bilet> s;
int v[101];
int n, S;

int cautBin(int element, int st, int dr) {
  if(st > dr) {
    return -1;
  }
  int mij = st + dr;
  mij = mij / 2;
  if(element == s[mij].s) {
    return mij;
  }
  if(element < s[mij].s) {
    return cautBin(element, st, mij - 1);
  }
  if(element > s[mij].s) {
    return cautBin(element, mij + 1, dr);
  }
}

int main() {
  f >> n >> S;
  for(int i = 0; i < n; i++) {
    f >> v[i];
  }
  for(int i = 0; i < n; i++) {
    for(int j = i; j < n; j++) {
      for(int k = j; k < n; k++) {
        bilet aux;
        aux.s = v[i] + v[j] + v[k];
        aux.nr1 = v[i];
        aux.nr2 = v[j];
        aux.nr3 = v[k];
        s.push_back(aux);
      }
    }
  }
  sort(s.begin(), s.end(), mycmp);

  for(int i = 0; i < s.size() ; i++) {
    int  poz;
    poz = cautBin(S - s[i].s, 0, s.size());
    if(poz != -1) {
      g << s[i].nr1 << " " << s[i].nr2 << " " << s[i].nr3 << " " << s[poz].nr1 << " " << s[poz].nr2 << " " << s[poz].nr3;
      return 0;
    }
  }
  g << -1;
  return 0;
}