Pagini recente » Cod sursa (job #574970) | Cod sursa (job #1319012) | Cod sursa (job #1165220) | Cod sursa (job #427346) | Cod sursa (job #2120788)
// Loto.cpp : Defines the entry point for the console application.
//
//#include "stdafx.h"
#include <fstream>
#include <vector>
#include <iostream>
#include <unordered_map>
#include <algorithm>
using namespace std;
vector <long long> numbers;
long long S;
void readData() {
ifstream f("loto.in");
int N;
f >> N >> S;
while (N--) {
long long x;
f >> x;
numbers.push_back(x);
}
f.close();
}
struct reconstruct {
int x, y, z;
reconstruct() = default;
reconstruct(int a, int b, int c) :x{ a }, y{ b }, z{ c } {}
};
unordered_map <long long, reconstruct> partialSums;
void buildPartialSums() {
ofstream g("loto.out");
int N = numbers.size();
reconstruct rec;
for (int i = 0; i < N; ++i)
for (int j = 0; j < N; ++j)
for (int k = 0; k < N; ++k) {
rec.x = i, rec.y = j, rec.z = k;
partialSums[numbers[i] + numbers[j] + numbers[k]] = rec;
if (S - (numbers[i] + numbers[j] + numbers[k]) < 0) continue;
auto it = partialSums.find(S - (numbers[i] + numbers[j] + numbers[k]));
if (it == partialSums.end())continue;
vector <long long> v{ numbers[i], numbers[j], numbers[k], numbers[it->second.x], numbers[it->second.y], numbers[it->second.z] };
sort(v.begin(), v.end());
for (int el : v) g << el << ' ';
return;
}
g << -1 << '\n';
}
int main() {
readData();
buildPartialSums();
return 0;
}