Pagini recente » Cod sursa (job #1095061) | Cod sursa (job #2280250) | Cod sursa (job #627396) | Cod sursa (job #972235) | Cod sursa (job #1415415)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
int sump[1000000], index, n;
bool binar(int x)
{
long pos=1<<19, i;
for(i=0;pos;pos=pos>>1)
{
if(i+pos<index&&sump[i+pos<=x])
i+=pos;
}
return sump[i]==x;
}
int main()
{
int s;
in>>n>>s;
int numere[n];
for(int i=0;i<n;i++)
{
in>>numere[i];
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
for(int k=0;k<n;k++)
{
sump[index]=numere[i]+numere[k]+numere[j];
index++;
}
}
}
sort(sump, sump+index);
for(int i=0;i<n;i++)
{
for(int j=i;j<n;j++)
{
for(int k=j;k<n;k++)
{
int x;
x=s-numere[i]-numere[j]-numere[k];
if(binar(x))
{
for(int a=0;a<n;a++)
{
for(int b=0;b<n;b++)
{
for(int c=0;c<n;c++)
{
if(numere[a]+numere[b]+numere[c]==x)
{
out<<numere[i]<<" "<<numere[i]<<" "<<numere[k]<<" ";
out<<numere[a]<<" "<<numere[b]<<" "<<numere[c]<<"\n";
return 0;
}
}
}
}
}
}
}
}
out<<-1<<"\n";
return 0;
}