Pagini recente » Cod sursa (job #989952) | Cod sursa (job #2742092) | Cod sursa (job #2921751) | Cod sursa (job #407857) | Cod sursa (job #2325817)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
int n,s,i,j,l,nr,st,dr,m,nd,md=666013;
int v[105];
struct per
{ int s,t1,t2,t3;
bool operator<(const per &alt)const
{ return s<alt.s; }
} z,d[1000005];
vector<per> H[666113];
int main() {
fin>>n>>s;
for(i=1;i<=n;i++)
fin>>v[i];
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
for(l=j;l<=n;l++)
nr=v[i]+v[j]+v[l], H[nr%md].push_back({nr, v[i], v[j], v[l]});
for(i=1;i<md;i++)
for(auto j:H[i])
if(d[nd].s!=j.s) d[++nd]=j;
sort(d+1,d+nd+1);
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
for(l=j;l<=n;l++)
{
nr=s-(v[i]+v[j]+v[l]);
st=1; dr=nd;
while(st<=dr)
{
m=(st+dr)/2;
if(d[m].s==nr)
{
fout<<v[i]<<" "<<v[j]<<" "<<v[l]<<" "<<d[m].t1<<" "<<d[m].t2<<" "<<d[m].t3<<"\n";
return 0;
}
if(d[m].s<nr) st=m+1;
else dr=m-1;
}
}
fout<<-1<<"\n";
}