Pagini recente » Cod sursa (job #350041) | Cod sursa (job #1745731) | Cod sursa (job #1125616) | Cod sursa (job #78890) | Cod sursa (job #1879192)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
vector<unsigned int> numbers;
vector<unsigned int> cifre;
void afisare(unsigned int sum, unsigned int lottoNumbers)
{
for (unsigned int i = 0; i < lottoNumbers; i++)
{
for (unsigned int j = 0; j < lottoNumbers; j++)
{
for (unsigned int k = 0; k < lottoNumbers; k++)
{
if (cifre[i] + cifre[j] + cifre[k] == sum)
{
fout << cifre[i] << ' ' << cifre[j] << ' ' << cifre[k] << ' ';
return;
}
}
}
}
}
int main()
{
unsigned int lottoNumbers = 0, sum = 0;
fin >> lottoNumbers >> sum;
for (unsigned int i = 0; i < lottoNumbers; i++)
{
unsigned int x;
fin >> x;
cifre.push_back(x);
}
for (unsigned int i = 0; i < lottoNumbers; i++)
{
for (unsigned int j = 0; j < lottoNumbers; j++)
{
for (unsigned int k = 0; k < lottoNumbers; k++)
{
numbers.push_back(cifre[i] + cifre[j] + cifre[k]);
}
}
}
sort(numbers.begin(), numbers.end(), [](int a, int b) {if (a < b)return true; else return false; });
unsigned int st = 0, dr = numbers.size() - 1, mij;
while (st <= dr)
{
if ((numbers[st] + numbers[dr]) == sum)
{
afisare(numbers[st], lottoNumbers);
afisare(numbers[dr], lottoNumbers);
return 0;
}
if ((numbers[st] + numbers[dr]) > sum)
{
dr--;
}
else st++;
}
fout << -1;
return 0;
}