Pagini recente » Cod sursa (job #2133192) | Cod sursa (job #179318) | Cod sursa (job #1029018) | Cod sursa (job #797657) | Cod sursa (job #2297992)
#include <fstream>
#include <vector>
#include <unordered_map>
#include <iostream>
#include <bits/unordered_map.h>
#define NMAX 105
#define pb push_back
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
struct Nums{
int a, b, c;
Nums(){
a = 0;
b = 0;
c = 0;
}
Nums(int a, int b, int c){
this->a = a;
this->b = b;
this->c = c;
}
};
int n, S;
vector<int> sums;
int arr[NMAX];
unordered_map<int, Nums> my_map;
bool b_search(int start, int end, int val){
while(start <= end){
int mij = (start + end) / 2;
if(sums[mij] == val){
return true;
}
else if(sums[mij] > val){
end = mij - 1;
}
else{
start = mij + 1;
}
}
return false;
}
void read_data(){
in >> n >> S;
for(int i = 0; i<n; i++){
int x;
in >> x;
arr[i] = x;
}
for(int i = 0; i<n; i++){
for(int j = 0; j<n; j++){
for(int k = i; k<=j; k++){
int sum = arr[i] + arr[j] + arr[k];
sums.pb(sum);
my_map[sum] = Nums(arr[i], arr[j], arr[k]);
}
}
}
for(int sum : sums){
if(b_search(0, (int)sums.size(), S - sum)){
auto num1 = my_map[sum];
auto num2 = my_map[S - sum];
out << num1.a << ' ' << num1.b << ' ' << num1.c << ' ' << num2.a << ' ' << num2.b << ' ' << num2.c << '\n';
return;
}
}
out << "-1\n";
}
int main(){
read_data();
return 0;
}