Pagini recente » Cod sursa (job #2427292) | Cod sursa (job #2916378) | Cod sursa (job #2566687) | Cod sursa (job #1895577) | Cod sursa (job #1362262)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
vector<int> v2;
int main()
{
int i,j,k,t,n,v[110],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];
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
for(k=1; k<=n; k++)
v2.push_back(v[i]+v[j]+v[k]);
sort(v2.begin(),v2.end());
for(i=0; i<=v2.size(); i++)
{
c=s-v2[i];
st=0;
dr=v2.size()-1;
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]<<" ";
}
}