Pagini recente » Cod sursa (job #1769104) | Cod sursa (job #1053513) | Cod sursa (job #1320660) | Cod sursa (job #3134001) | Cod sursa (job #2893578)
#include <iostream>
#include <algorithm>
#include <fstream>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
struct ListaSume
{
int s, x, y, z;
} lista[1010001];
bool comparaLista(ListaSume a, ListaSume b)
{
if(a.s > b.s)
return 0;
return 1;
}
int n, suma, i, j, k, v[111], nrSume = 0, gasit = 0;
int main()
{
in>>n>>suma;
for(i = 1; i <= n; i++)
in>>v[i];
for(i = 1; i <= n; i++) //facem sume de cate 3 numere, pentru ca apoi sa vedem daca gasim alta suma de 3 nr care adunate sa dea s
for(j = i; j <= n; j++)
for(k = j; k <= n; k++)
{
nrSume++;
lista[nrSume].s = v[i] + v[j] + v[k];
lista[nrSume].x = v[i];
lista[nrSume].y = v[j];
lista[nrSume].z = v[k];
}
sort(lista + 1, lista + nrSume + 1, comparaLista);
i = 1;
j = nrSume;
while(i <= j && gasit == 0)
{
if(lista[i].s + lista[j].s == suma)
{
out<<lista[i].x<<" "<<lista[i].y<<" "<<lista[i].z<<" "<<lista[j].x<<" "<<lista[j].y<<" "<<lista[j].z;
gasit = 1;
}
else if(lista[i].s + lista[j].s > suma)
j--;
else if(lista[i].s + lista[j].s < suma)
i++;
}
if(gasit == 0)
out<<-1;
return 0;
}