Cod sursa(job #2977014)

Utilizator gianiferSpita Alexandru-Mihai gianifer Data 10 februarie 2023 17:32:51
Problema Loto Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <fstream>
#include <algorithm>

#define N_MAX 1000005

using namespace std;

ifstream fin("loto.in");
ofstream fout("loto.out");

struct loto
{
   int nr1, nr2, nr3, suma;
} v[N_MAX];
int n, S, a[105];
bool cmp(loto a, loto b)
{
   return a.suma < b.suma;
}
int total = 0;
int main()
{
   fin >> n >> S;
   for (int i = 1; i <= n; i++)
      fin >> a[i];
   for (int i = 1; i <= n; i++)
      for (int j = i; j <= n; j++)
         for (int k = j; k <= n; k++)
         {
            total++;
            v[total].nr1 = a[i];
            v[total].nr2 = a[j];
            v[total].nr3 = a[k];
            v[total].suma = a[i] + a[j] + a[k];
         }
   sort(v + 1, v + n + 1, cmp);
   for (int i = 1; i <= total; i++)
   {
      int st = 1, dr = total;
      int sum = S - v[i].suma;
      while (st < dr)
      {
         int mij = (st + dr) / 2;
         if (v[mij].suma == sum)
         {
            fout << v[mij].nr1 << " " << v[mij].nr2 << " " << v[mij].nr3 <<" "<< v[i].nr1 << " " << v[i].nr2 << " " << v[i].nr3;
            exit(0);
         }
         if (sum > v[mij].suma)
            st = mij + 1;
         else
            dr = mij - 1;
      }
   }
   fout<<"-1";
}