Pagini recente » Cod sursa (job #683826) | Cod sursa (job #2623554) | Cod sursa (job #1029902) | Cod sursa (job #1613315) | Cod sursa (job #1232612)
#include <fstream>
#include <unordered_set>
#define FOR() for (int i = 0; i < N; ++i) for (int j = 0; j < N; ++j) for (int k = 0; k < N; ++k)
#define Print() fout << a[i] << " " << a[j] << " " << a[k] << " "
using namespace std;
int N, S, a[105], sum1, sum2, sol[6], found;
unordered_set<int> sum_set;
ifstream fin("loto.in");
ofstream fout("loto.out");
bool GetSums() {
FOR() {
int crt_sum = a[i] + a[j] + a[k];
sum_set.insert(crt_sum);
if (sum_set.find(S - crt_sum) != sum_set.end()) {
sum1 = crt_sum;
sum2 = S - sum1;
return 1;
}
}
return 0;
}
void GetSol() {
FOR() {
int crt_sum = a[i] + a[j] + a[k];
if (!(found & 1) && crt_sum == sum1) {
found |= 1;
Print();
}
if (!(found & 2) && crt_sum == sum2) {
found |= 2;
Print();
}
if (found == 3)
return;
}
}
int main() {
fin >> N >> S;
for (int i = 0; i < N; ++i)
fin >> a[i];
if (GetSums())
GetSol();
else
fout << "-1\n";
return 0;
}