Pagini recente » Cod sursa (job #355301) | Cod sursa (job #1601348) | Cod sursa (job #1300749) | Cod sursa (job #1229686) | Cod sursa (job #2182230)
#include <bits/stdc++.h>
#define nrmare 1000000
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
long long n, rez, a[150], lnx;
struct sum {int s1, s2, s3, s;};
sum v[nrmare];
bool cmp (sum x, sum y){
return x.s<y.s;
}
void dostuff(){
int i, j, k, ln;
f>>n>>rez;
for (i=1; i<=n; i++){
f>>a[i];
}
ln=1;
for (i=1; i<=n; i++){
for (j=i; j<=n; j++){
for (k=j; k<=n; k++){
v[ln].s1=a[i];
v[ln].s2=a[j];
v[ln].s3=a[k];
v[ln].s=a[i]+a[j]+a[k];
ln++;
}
}
}
ln--;
sort (v, v+ln, cmp);
lnx=ln;
}
void domorestuff(){
int i, ec, ls, ld, m;
for (i=1; i<=lnx; i++){
ec=rez-v[i].s;
ls=1; ld=lnx;
while (ls<=ld){
m=(ls+ld)/2;
if (v[m].s==ec){
g<<v[i].s1<<" "<<v[i].s2<<" "<<v[i].s3<<" ";
g<<v[m].s1<<" "<<v[m].s2<<" "<<v[m].s3<<" ";
return;
} else {
if (v[m].s<ec){
ls=m+1;
}
if (v[m].s>ec){
ld=m-1;
}
}
}
}
g<<"-1";
}
int main()
{
dostuff();
domorestuff();
return 0;
}