Pagini recente » Cod sursa (job #102563) | Istoria paginii runda/sim2 | Cod sursa (job #1575536) | Cod sursa (job #2018986) | Cod sursa (job #856972)
Cod sursa(job #856972)
#include<fstream>
#include<algorithm>
using namespace std;
struct e{int s,a,b,c;}sol[700000];
int a[105],n,s,acum,nr;
ifstream in("loto.in"); ofstream out("loto.out");
bool cmp(e x, e y){
if(x.s>y.s) return 0; return 1;
}
void afis(int x, int y){
out<<sol[x].a<<' '<<sol[x].b<<' '<<sol[x].c<<' '<<sol[y].a<<' '<<sol[y].b<<' '<<sol[y].c<<'\n';
}
int main(){
in>>n>>s;
for(int i=1;i<=n;++i) in>>a[i];
for(int i=1;i<=n;++i){
for(int j=i;j<=n;++j){
for(int k=j;k<=n;++k){
acum=a[i]+a[j]+a[k];
sol[++nr]=(e){acum,a[i],a[j],a[k]};
}
}
}
sort(sol+1,sol+nr+1,cmp);
for(int i=1;i<=nr;++i){
//caut(i);
int x=s-sol[i].s,p=1,u=nr,m=(p+u)/2;
if(x>0){
while(p<=u){
m=(p+u)/2;
if(x==sol[m].s){
afis(i,m); return 0;
}
else{
if(x>sol[m].s){
p=m+1;
}
else{
u=m-1;
}
}
}
}
}
out<<"-1\n";
out.close(); return 0;
}