Cod sursa(job #1920700)

Utilizator RalucaIosubIosub Raluca Nicoleta RalucaIosub Data 10 martie 2017 09:23:09
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <bits/stdc++.h>
using namespace std;

int v[100], nr[1000001], n;
ifstream f("loto.in");
ofstream g("loto.out");

void afis(int x)
{
  for(int i = 1; i <= n; i++)
    for(int j = 1; j <= n; j++)
      for(int k = 1; k <= n; k++)
        if(x == v[i] + v[j] + v[k])
        {
          g<<v[i]<<' '<<v[j]<<' '<<v[k]<<' ';
          return;
        }
}

int main()
{

  int s, i, j, k, m, ok;
  //citire
  f>>n>>s;
  for(i = 1; i <= n; i++)
    f>>v[i];
  m = 0;
  //constr vector nr ca suma de oricare 3 numere citite
  for(int i = 1; i <= n; i++)
    for(int j = 1; j <= n; j++)
      for(int k = 1; k <= n; k++)
        nr[++m] = v[i] + v[j] + v[k];

  sort(nr +1, nr + m + 1);//sortare crescatoare

  ok = 0;
  i = 1;
  j = m ;//cauta o solutie in timp liniar
  while(ok == 0 && i <= m && j >= 1)
  {
    if(nr[i] + nr[j] < s)i++;
    else if(nr[i] + nr[j] > s)j--;
    else
    {
      afis(nr[i]);//caz de egalitate
      afis(nr[j]);//caz de egalitate
      ok = 1;
    }
  }
  if(ok == 0)g<<-1;
  f.close();
  g.close();
  return 0;
}