Pagini recente » Cod sursa (job #800454) | Cod sursa (job #477131) | Cod sursa (job #259123) | Cod sursa (job #430666) | Cod sursa (job #1689483)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
long long sum,n,v[1005],i,j,h,st,dr,mid,ok,k,sud;
pair< pair<long long , long long> , pair<long long , long long> > s[1000001];
int main ()
{
fin>>n>>sum;
for(i=1;i<=n;i++)
fin>>v[i];
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
for(h=j;h<=n;h++)
{
s[++k].first.first=v[i]+v[j]+v[h];
s[k].first.second=v[i];
s[k].second.first=v[j];
s[k].second.second=v[h];
}
sort(s+1, s+1+k);
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
for(h=j;h<=n;h++)
{
sud=sum-v[i]-v[j]-v[h];
st=1;
dr=k;
while(st<=dr)
{
mid=(st+dr)/2;
if(s[mid].first.first==sud)
{
fout<<v[i]<<" ";
fout<<v[j]<<" ";
fout<<v[h]<<" ";
fout<<s[mid].first.second<<" ";
fout<<s[mid].second.first<<" ";
fout<<s[mid].second.second;
ok=1;
return 0;
}
else
if(s[mid].first.first>sud)
dr=mid-1;
else
st=mid+1;
}
if(ok==1)
break;
}
if(ok==0)
fout<<-1;
fin.close();
fout.close();
return 0;
}