Pagini recente » Cod sursa (job #2534962) | Cod sursa (job #470431) | Cod sursa (job #1966391) | Cod sursa (job #1358180) | Cod sursa (job #2120807)
// 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> numbers;
long S;
void readData() {
ifstream f("loto.in");
int N;
long x;
f >> N >> S;
while (N--)f >> x,numbers.push_back(x);
}
struct reconstruct {
int x, y, z;
reconstruct() = default;
reconstruct(int a, int b, int c) :x{ a }, y{ b }, z{ c } {}
};
unordered_map <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;
if (partialSums.count(S - (numbers[i] + numbers[j] + numbers[k])) <= 0)continue;
rec = partialSums[S - (numbers[i] + numbers[j] + numbers[k])];
vector <long long> v{ numbers[i], numbers[j], numbers[k], numbers[rec.x], numbers[rec.y], numbers[rec.z] };
sort(v.begin(), v.end());
for (int el : v) g << el << ' ';
return;
}
g << -1 << '\n';
}
int main() {
readData();
buildPartialSums();
return 0;
}