Pagini recente » Cod sursa (job #1094892) | Cod sursa (job #3314410) | Monitorul de evaluare | Cod sursa (job #1067332) | Cod sursa (job #3330379)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
struct nod
{
long long s;
int a,b,c;
};
bool cmp(nod x,nod y)
{
return x.s<y.s;
}
int main()
{
ios::sync_with_stdio(false);
fin.tie(0);
int n;
long long s;
fin>>n>>s;
vector<long long>a(n);
for(int i=0;i<n;i++)
fin>>a[i];
vector<nod>v;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
for(int k=0;k<n;k++)
v.push_back({a[i]+a[j]+a[k],i,j,k});
sort(v.begin(),v.end(),cmp);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
for(int k=0;k<n;k++)
{
long long cur=a[i]+a[j]+a[k];
long long need=s-cur;
int st=0,dr=(int)v.size()-1;
while(st<=dr)
{
int mij=(st+dr)/2;
if(v[mij].s==need)
{
fout<<a[v[mij].a]<<" "<<a[v[mij].b]<<" "<<a[v[mij].c]<<" "<<a[i]<<" "<<a[j]<<" "<<a[k];
return 0;
}
if(v[mij].s<need)
st=mij+1;
else
dr=mij-1;
}
}
fout<<-1;
return 0;
}