Pagini recente » Cod sursa (job #592759) | Borderou de evaluare (job #907246) | Borderou de evaluare (job #2866250) | Cod sursa (job #1541088) | Cod sursa (job #2647581)
#include <fstream>
#include <algorithm>
#define ll long long
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
const int NMAX = 1e6 + 5, VMAX = 105;
struct ELEMENT {
int val1;
int val2;
int val3;
int sum;
} v[NMAX];
int vct[VMAX];
int n, s;
int cnt;
bool cmp(ELEMENT x, ELEMENT y) {
return x.sum < y.sum;
}
void afis(int a, int b) {
fout << v[a].val1 << " " << v[a].val2 << " " << v[a].val3 << " ";
fout << v[b].val1 << " " << v[b].val2 << " " << v[b].val3 << "\n";
}
void my_search() {
int st = 1, dr = cnt;
while(st <= dr) {
int val = v[st].sum + v[dr].sum;
if(val == s) {
afis(st, dr);
return;
} else if(val < s)
st++;
else
dr--;
}
fout << "-1";
}
int main()
{
fin >> n; fin >> s;
for(int i = 1; i <= n; i++) {
fin >> vct[i];
}
for(int i = 1; i <= n; i++) {
for(int j = i; j <= n; j++) {
for(int r = j; r <= n; r++) {
int valoareSuma = vct[i] + vct[j] + vct[r];
if(valoareSuma > s)
continue;
v[++cnt].val1 = vct[i];
v[cnt].val2 = vct[j];
v[cnt].val3 = vct[r];
v[cnt].sum = valoareSuma;
}
}
}
sort(v + 1, v + cnt + 1, cmp);
my_search();
return 0;
}