Pagini recente » Cod sursa (job #1116242) | Cod sursa (job #434887) | Cod sursa (job #456172) | Cod sursa (job #3184101) | Cod sursa (job #2211454)
#include <iostream>
#include <fstream>
#include <set>
std::ifstream in("loto.in");
std::ofstream out("loto.out");
struct Lista_Simpla{
long s;
long x;
long y;
long z;
Lista_Simpla* adr_urm;
};
int main()
{
int stiva[6];
int N;
int S;
in >> N >> S;
std::set<long> numere;
long x;
for(int i = 1; i <= N; ++i){
in >> x;
numere.insert(x);
}
Lista_Simpla* sume_cap = new Lista_Simpla;
Lista_Simpla* sume_iterator = sume_cap;
std::set<long>::iterator i = numere.begin();
//introducerea primului element in listra de sume
sume_iterator->s = 3 * *i;
sume_iterator->x = *i;
sume_iterator->y = *i;
sume_iterator->z = *i;
sume_iterator->adr_urm = NULL;
//restul elementelor: in ordine crescatoare si fara elemente repetate
for(std::set<long>::iterator i = numere.begin(); i != numere.end(); ++i)
{
for(std::set<long>::iterator j = numere.begin(); j != numere.end(); ++j)
{
for(std::set<long>::iterator k = numere.begin(); k != numere.end(); ++k){
long su = *i + *j + *k;
int it = 1;
sume_iterator = sume_cap;
while(sume_iterator->adr_urm != NULL && su > sume_iterator->adr_urm->s){
sume_iterator = sume_iterator->adr_urm;
}
if(sume_iterator->adr_urm == NULL || su != sume_iterator->adr_urm->s){
Lista_Simpla* temp = new Lista_Simpla;
temp->s = su;
temp->x = *i;
temp->y = *j;
temp->z = *k;
temp->adr_urm = sume_iterator->adr_urm;
sume_iterator->adr_urm = temp;
}
}
}
}
sume_cap = sume_cap->adr_urm;
bool continua = true;
for(Lista_Simpla* it1 = sume_cap; it1 != NULL && continua == true; it1 = it1->adr_urm){
for(Lista_Simpla* it2 = it1; it2 != NULL && continua == true; it2 = it2->adr_urm){
if(it1->s + it2->s == S){
continua = false;
out << it1->x << ' ' << it1->y << ' ' << it1->z << ' ';
out << it2->x << ' ' << it2->y << ' ' << it2->z;
}
}
}
if(continua == true){
out << -1;
}
return 0;
}