Pagini recente » Cod sursa (job #466368) | Cod sursa (job #327500) | Cod sursa (job #2818250) | Cod sursa (job #326180) | Cod sursa (job #927998)
Cod sursa(job #927998)
#include<cstdio>
#include<vector>
#include<utility>
#include<algorithm>
#define nmax 110
using namespace std;
int n,s,v[nmax],i,j,k,x,st,dr,m;
vector<int>sol;
vector<pair<int,pair<int,pair<int,int> > > >V;
vector<pair<int,pair<int,pair<int,int> > > >::iterator it;
int main()
{
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%d%d", &n, &s);
for(i=1;i<=n;++i)scanf("%d", &v[i]);
for(i=1;i<=n;++i)
for(j=i;j<=n;++j)
for(k=j;k<=n;++k)
V.push_back(make_pair(v[i]+v[j]+v[k],make_pair(v[i],make_pair(v[j],v[k]))));
sort(V.begin(),V.end());
for(it=V.begin();it!=V.end();++it)
{
x=s-(it->first);
st=0;dr=V.size()-1;
for(;st<=dr;)
{
m=(st+dr)/2;
if(V[m].first==x)
{
sol.push_back(it->second.first);
sol.push_back(it->second.second.first);
sol.push_back(it->second.second.second);
sol.push_back(V[m].second.first);
sol.push_back(V[m].second.second.first);
sol.push_back(V[m].second.second.second);
sort(sol.begin(),sol.end());
for(vector<int>::iterator IT=sol.begin();IT!=sol.end();++IT)
printf("%d ", *IT);
return 0;
}
if(V[m].first<x)dr=m-1;
else st=m+1;
}
}
printf("-1\n");
return 0;
}