Pagini recente » Cod sursa (job #3031260) | preoni_nicu4 | Cod sursa (job #2121852) | Cod sursa (job #2607929) | Cod sursa (job #1699592)
#include <iostream>
#include <fstream>
#include <deque>
#include <algorithm>
using namespace std;
int n, s;
int nrs[100];
int pairs[5050];
pair<int,int> indx[5050];
ifstream in("loto.in");
ofstream out("loto.out");
int main()
{
bool sol = false;
int a, b, c, d, e, f, x, i;
int sa = 0, sb = 0, sc = 0, sd = 0, se = 0, sf = 0;
in>>n>>s;
for (i=0; i<n; i++) {
in>>x;
nrs[i] = x;
}
sort(nrs, nrs+n);
i=0;
for (a=0; a<n; a++) {
for (b=a; b<n; b++) {
pairs[i] = nrs[a] + nrs[b];
indx[i] = pair<int,int>(a,b);
i++;
}
}
sort(pairs, pairs + n*(n+1)/2);
for (a=0; a<n*(n+1)/2; a++) {
sa = pairs[a];
if (pairs[a] * 3 <= s)
for (b=a; b<n*(n+1)/2; b++) {
sb = sa + pairs[b];
if (sa + pairs[b] * 2 <= s)
for (c=b; c<n*(n+1)/2; c++) {
sc = sb + pairs[c];
if (sc == s) {
sol = true;
goto done;
}
else if (sc > s) {
break;
}
}
}
}
done:
if (!sol) {
out<<-1;
}
else {
out<<nrs[indx[a].first]<<" "<<nrs[indx[a].second]<<" ";
out<<nrs[indx[b].first]<<" "<<nrs[indx[b].second]<<" ";
out<<nrs[indx[c].first]<<" "<<nrs[indx[c].second]<<" ";
}
in.close();
out.close();
return 0;
}