Pagini recente » Cod sursa (job #1244891) | Cod sursa (job #718068) | Cod sursa (job #2233814) | Cod sursa (job #1620766) | Cod sursa (job #1363350)
#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]<<" ";
return 0;
}