Pagini recente » Cod sursa (job #1889550) | Cod sursa (job #861347) | Cod sursa (job #153594) | Cod sursa (job #266465) | Cod sursa (job #1022441)
#include<iostream>
#include<fstream>
using namespace std;
struct suma{
int s, i, j, k;
};
int cmp(const void* s1,const void* s2){
if ((*(suma*)s1).s > (*(suma*)s2).s){
return 1;
}
return -1;
}
int bSearch(suma S[],int stanga, int dreapta, int x){
while (stanga <= dreapta){
int mij = (dreapta + stanga) / 2;
if (x == S[mij].s){
return mij;
}
else{
if (x < S[mij].s){
dreapta = mij - 1;
}
else{
stanga = mij + 1;
}
}
}
return -1;
}
int main(){
ifstream f("loto.in");
ofstream o("loto.out");
int n = 0, s = 0;
int V[100];
suma S[10000];
int indexS = 0;
f >> n >> s;
for (int i = 0; i < n; i++)
{
f>>V[i];
}
for (int i = 0; i < n; i++){
for (int j = 0; j < n; j++){
for (int k = 0; k < n; k++){
int s1 = V[i] + V[j] + V[k];
if (s1 < s){
suma c;
c.i = V[i];
c.j = V[j];
c.k = V[k];
c.s = s1;
S[indexS++] = c;
}
}
}
}
qsort(S, indexS, sizeof(suma), cmp);
bool g = false;
for (int i = 0; i < indexS; i++){
int compl = s - S[i].s;
int m = bSearch(S, 0, indexS, compl);
if (m != -1){
o << S[i].i << " " << S[i].j << " " << S[i].j << " " << S[m].i << " " << S[m].j << " " << S[m].k << '\n';
g = true;
break;
}
}
if (g == false)
o << -1;
return 0;
}