Pagini recente » Cod sursa (job #1981960) | Cod sursa (job #2569810) | Cod sursa (job #1351100) | Cod sursa (job #885638) | Cod sursa (job #2773143)
#include <iostream>
#include <chrono>
#include <fstream>
#include <vector>
#include <algorithm>
std::vector<int> results;
std::ifstream in;
std::ofstream out;
int target;
const int UP_TO = 5;
void printSolution() {
int sum = 0;
for (const auto &item: results) {
sum += item;
}
if(sum == target){
for (const auto &item: results) {
out << item << " ";
}
exit(0);
}
}
void test_bk(int state, std::vector<int> &numbers) {
for (const auto &item: numbers) {
results[state] = item;
if (state == UP_TO)
printSolution();
if (state < UP_TO) {
test_bk(state + 1, numbers);
}
}
}
void solve() {
results.resize(UP_TO + 1);
in.open("../loto.in");
out.open("../loto.out");
int number_of_numbers, target_sum;
// open file
int ok = in.is_open() && in.is_open();
if (!ok) {
std::cout << "Cant open files!";
return;
}
in >> number_of_numbers >> target_sum;
target = target_sum;
std::vector<int> numbers(number_of_numbers);
for (int &item: numbers) {
in >> item;
}
in.close();
std::sort(numbers.begin(), numbers.end(), std::less());
test_bk(0, numbers);
}
int main() {
auto start = std::chrono::high_resolution_clock::now();
solve();
auto stop = std::chrono::high_resolution_clock::now();
auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(stop - start);
std::cout << std::endl << "[time]:" << duration.count() << std::endl;
return 0;
}