Pagini recente » Cod sursa (job #64497) | Cod sursa (job #449089) | Cod sursa (job #833182) | Cod sursa (job #2398893) | Cod sursa (job #2692734)
#include <fstream>
#include <algorithm>
#include<vector>
using namespace std;
ifstream cin("loto.in");
ofstream cout("loto.out");
struct perechi{
int suma,a,b,c;
};
vector<perechi>v;
vector<int>x;
int cmp(perechi a,perechi b)
{
return (a.suma<b.suma);
}
int cautare(int val)
{
int mj,st,dr;
st=0;dr=v.size()-1;
while(st<=dr)
{
mj=(st+dr)/2;
if(v[mj].suma==val)return mj;
else if(v[mj].suma<val)st=mj+1;
else dr=mj-1;
}
return -1;
}
int main()
{
int n,s,i,j,k,a,val,poz1,poz2;
int sol[7];
perechi p;
cin>>n>>s;
for(i=1;i<=n;i++)
{
cin>>a;
x.push_back(a);
for(j=0;j<x.size();j++)
for(k=0;k<=j;k++)
{
p.suma=a+x[j]+x[k];
p.a=a;
p.b=x[j];
p.c=x[k];
v.push_back(p);
}
}
sort(v.begin(),v.end(),cmp);
int gasit=0;
for(i=0;i<v.size()&&!gasit;i++)
{
val=s-v[i].suma;
poz2=cautare(val);
if(poz2!=-1)
{
gasit=1;
poz1=i;
}
}
// for(i=0;i<v.size();i++)
// cout<<v[i].suma<<" "<<v[i].a<<" "<<v[i].b<<" "<<v[i].c<<endl;
if(!gasit)cout<<-1;
else
{
sol[0]=v[poz1].a;
sol[1]=v[poz1].b;
sol[2]=v[poz1].c;
sol[3]=v[poz2].a;
sol[4]=v[poz2].b;
sol[5]=v[poz2].c;
sort(sol,sol+6);
for(i=0;i<6;i++)
cout<<sol[i]<<" ";
}
}