Pagini recente » Cod sursa (job #2538976) | Cod sursa (job #29922) | Cod sursa (job #2219743) | Cod sursa (job #2174570) | Cod sursa (job #1920700)
#include <bits/stdc++.h>
using namespace std;
int v[100], nr[1000001], n;
ifstream f("loto.in");
ofstream g("loto.out");
void afis(int x)
{
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
for(int k = 1; k <= n; k++)
if(x == v[i] + v[j] + v[k])
{
g<<v[i]<<' '<<v[j]<<' '<<v[k]<<' ';
return;
}
}
int main()
{
int s, i, j, k, m, ok;
//citire
f>>n>>s;
for(i = 1; i <= n; i++)
f>>v[i];
m = 0;
//constr vector nr ca suma de oricare 3 numere citite
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
for(int k = 1; k <= n; k++)
nr[++m] = v[i] + v[j] + v[k];
sort(nr +1, nr + m + 1);//sortare crescatoare
ok = 0;
i = 1;
j = m ;//cauta o solutie in timp liniar
while(ok == 0 && i <= m && j >= 1)
{
if(nr[i] + nr[j] < s)i++;
else if(nr[i] + nr[j] > s)j--;
else
{
afis(nr[i]);//caz de egalitate
afis(nr[j]);//caz de egalitate
ok = 1;
}
}
if(ok == 0)g<<-1;
f.close();
g.close();
return 0;
}