Pagini recente » Cod sursa (job #2062459) | Cod sursa (job #1111411) | Cod sursa (job #1074904) | Cod sursa (job #2229365) | Cod sursa (job #1074903)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fi("loto.in");
ofstream fo("loto.out");
struct valori {
int a,b,c,suma;};
int v[100],s,x,y,nr;
short n;
valori w[1000002];
int comparare(const valori &x,const valori &y)
{
return(x.suma < y.suma);
}
int main()
{
fi>>n>>s;
for (int i=1;i<=n;i++) {
fi>>v[i];
if (v[i]*6==s)
x=v[i];
if (v[i]>y)
y=v[i];
}
if (x!=0)
for (int i=1;i<=6;i++)
fo<<x<<' ';
else
if (y*6<s)
fo<<'-1';
else
for (int i=1;i<=n;i++)
for (int j=i;j<=n;j++)
for (int k=j;k<=n;k++) {
nr++;
w[nr].a=v[i];
w[nr].b=v[j];
w[nr].c=v[k];
w[nr].suma=v[i]+v[j]+v[k];
}
sort(w+1,w+nr+1,comparare);
int ok=1,sum=0,mid=0;
for (int i=1;i<=n;i++)
for (int j=i;j<=n;j++)
for (int k=j;k<=n;k++) {
sum=s-v[i]-v[j]-v[k];
int st=1,dr=nr;
while ((st<=dr)&&(ok==1)) {
mid=(st+dr)/2;
if (w[mid].suma>sum)
dr=mid-1;
else
if (w[mid].suma<sum)
st=mid+1;
else
ok=0;
}
if (!ok) {
fo<<v[i]<<' '<<v[j]<<' '<<v[k]<<' '<<w[mid].a<<' '<<w[mid].b<<' '<<w[mid].c;
break;
}
}
return 0;
}