Pagini recente » Cod sursa (job #67425) | Cod sursa (job #452929) | Cod sursa (job #1612494) | Cod sursa (job #2163622) | Cod sursa (job #2405437)
#include <fstream>
#include <algorithm>
using namespace std;
struct unsir{
int suma;
int primul;
int doilea;
int treilea;
};
unsir s[1000010];
int n,sum,a,i,j,x,k,q,p,st,dr,val,mid,v[110];
int cmp(unsir x, unsir y){
return x.suma<y.suma;
}
int main (){
ifstream fin ("loto.in");
ofstream fout ("loto.out");
fin>>n>>sum;
for (i=1;i<=n;i++){
fin>>x;
if (x<=sum){
v[++k]=x;
}
}
sort (v+1,v+n+1);
n=k;
for (i=1;i<=n;i++){
for (j=i;j<=n;j++){
for (k=j;k<=n;k++){
s[++a].suma=v[i]+v[j]+v[k];
s[a].primul=v[i];
s[a].doilea=v[j];
s[a].treilea=v[k];
}
}
}
sort (s+1,s+a+1,cmp);
for (i=1;i<=n;i++){
for (j=1;j<=n;j++){
for (k=1;k<=n;k++){
val=sum-v[i]-v[j]-v[k];
st=1;
dr=a;
while (st<=dr){
mid=(st+dr)/2;
if (s[mid].suma==val){
fout<<v[i]<<" "<<v[j]<<" "<<v[k]<<" "<<s[mid].primul<<" "<<s[mid].doilea<<" "<<s[mid].treilea;
return 0;
}
if (s[mid].suma<val){
st=mid+1;
}
else{
dr=mid-1;
}
}
}
}
}
fout<<-1;
return 0;
}