Cod sursa(job #2672295)

Utilizator KillHorizon23Orban Robert KillHorizon23 Data 13 noiembrie 2020 16:47:36
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ifstream fin("loto.in");
ofstream fout("loto.out");
const int NMAX = 105;
int n, s, sr[NMAX];
struct SUM{
  int sm, p1, p2, p3;
};
vector<SUM> v;
bool comp(SUM a, SUM b)
{
  return a.sm < b.sm;
}
void cit()
{
  fin >> n >> s;
  for (int i = 1; i <= n; ++i)
    fin >> sr[i];
  fin.close();
}
void constr()
{
  for (int i = 1; i <= n; ++i)
    for (int j = i; j <= n; ++j)
      for (int ij = j; ij <= n; ++ij)
        v.push_back({sr[i] + sr[j] + sr[ij], i, j, ij});
  sort(v.begin(), v.end(), comp);
}
void solve()
{
  unsigned int st = 0, dr = v.size() - 1;
  while (st <= dr)
  {
    int axsm = v[st].sm + v[dr].sm;
    if (axsm == s)
      break;
    else if (axsm < s)
      st = st + 1;
    else
      dr = dr - 1;
  }
  if (v[st].sm + v[dr].sm != s)
    fout << -1;
  else fout << sr[v[st].p1] << " " << sr[v[st].p2] << " " << sr[v[st].p3]
   << " " << sr[v[dr].p1] << " " << sr[v[dr].p2] << " " << sr[v[dr].p3];
  fout.close();
}
int main()
{
  ios::sync_with_stdio(false);
  fin.tie(0);

  cit();
  constr();
  solve();

  return 0;
}