Pagini recente » Cod sursa (job #516295) | Cod sursa (job #873098) | Cod sursa (job #2789958) | Cod sursa (job #1430700) | Cod sursa (job #3154707)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("loto.in");
ofstream cout("loto.out");
struct chestie{
int sum;
int indice1;
int indice2;
int indice3;
} sume[1000001];
bool compare(chestie a, chestie b){
return a.sum < b.sum;
}
int binary_search(int left, int right, int nr){
int rezultat = 0;
while (left <= right){
int mid = (left + right) / 2;
if (nr <= sume[mid].sum){
right = mid - 1;
rezultat = mid;
} else {
left = mid + 1;
}
}
if (sume[rezultat].sum == nr)
return rezultat;
return -1;
}
int main(){
int n, suma, contor = 0;
int numere[101];
cin >> n >> suma;
for (int i = 1; i <= n; i++){
cin >> numere[i];
}
for (int i = 1; i <= n; i++){
for (int j = 1; j <= n; j++){
for (int k = 1; k <= n; k++) {
contor++;
chestie x;
x.sum = numere[i] + numere[j] + numere[k];
x.indice1 = numere[i];
x.indice2 = numere[j];
x.indice3 = numere[k];
sume[contor] = x;
}
}
}
sort(sume+1, sume+1+contor, compare);
for (int i = 1; i <= contor; i++){
int complement_binar = suma - sume[i].sum;
int ind_gasit = binary_search(1, contor, complement_binar);
if (sume[ind_gasit].sum == complement_binar){
cout << sume[ind_gasit].indice1 << " " << sume[ind_gasit].indice2 << " " << sume[ind_gasit].indice3 << " ";
cout << sume[i].indice1 << " " << sume[i].indice2 << " " << sume[i].indice3;
exit(0);
}
}
cout << -1;
return 0;
}