Pagini recente » Cod sursa (job #1325228) | Cod sursa (job #1689226) | Cod sursa (job #2564103) | Cod sursa (job #1425075) | Cod sursa (job #1362188)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
int main()
{
int i,j,k,t,n,v[110],v2[500000],s,c,sol=-1,flag1=0,flag2=0,st,dr,mij,vsol[10],p=1;
in>>n>>s;
for(i=1; i<=n; i++)
in>>v[i];
t=1;
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
for(k=1; k<=n; k++)
{
v2[t]=v[i]+v[j]+v[k];
t++;
}
sort(v2+1,v2+t+1);
for(i=1; i<=t; i++)
{
c=s-v2[i];
st=1;
dr=t;
sol=-1;
while(st<=dr)
{
mij=(st+dr)/2;
if(c<v2[mij]) dr=mij-1;
if(c>v2[mij]) st=mij+1;
if(c==v2[mij])
{
sol=v2[i];
break;
}
}
if(sol!=-1) break;
}
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
for(k=1; k<=n; k++)
{
if(v[i]+v[j]+v[k]==c && flag1==0)
{
vsol[p]=v[i];
p++;
vsol[p]=v[j];
p++;
vsol[p]=v[k];
p++;
flag1=1;
}
if(v[i]+v[j]+v[k]==sol && flag2==0)
{
vsol[p]=v[i];
p++;
vsol[p]=v[j];
p++;
vsol[p]=v[k];
p++;
flag2=1;
}
if(flag1==flag2 && flag1==1) break;
}
p--;
sort(vsol+1,vsol+p+1);
if(flag1==flag2 && flag1==0) out<<-1;
else
{
for(i=1;i<=p;i++)
out<<vsol[i]<<" ";
}
}