Cod sursa(job #2445253)

Utilizator stefanut999Paul Colta stefanut999 Data 3 august 2019 11:47:35
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I Marime 1.13 kb
#include <iostream>
#include <cmath>
#include <algorithm>
#include <fstream>
#define nmax 1000001
#define rep(a,b,c) for(a = b; a <= c; ++a)
using namespace std;

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

struct tip{
  int sum, a, b, c;
};

bool comp(tip x,tip y)
{
  return x.sum < y.sum;
}

tip s[nmax];
int v[101];

int main()
{
  int i, j, k, st, dr, mijl, n, suma, lg = 0, x;
  fin >> n >> suma;
  rep(i,1,n)
    fin >>v[i];

  rep(i,1,n)
    rep(j,i,n)
      rep(k,j,n)
        {
          s[++lg].sum = v[i] + v[j] + v[k];
          s[lg].a = v[i];
          s[lg].b = v[j];
          s[lg].c = v[k];
        }
  sort(s + 1, s + lg + 1, comp);
  rep(i,1,lg)
  {
    x = suma - s[i].sum;
    st = 1;
    dr = lg;

    while(st <= dr)
      {
        mijl = (st + dr) / 2;
        if(s[mijl].sum == x)
          {
            fout <<s[mijl].a<<" "<<s[mijl].b<<" "<<s[mijl].c<<" "<<s[i].a<<" "<<s[i].b<<" "<<s[i].c;
            return 0;
          }
        if(s[mijl].sum > x)
          dr = mijl - 1;
        else
          st = mijl + 1;
      }
  }
  fout << -1;
  return 0;
}