Pagini recente » Cod sursa (job #379219) | Cod sursa (job #2268973) | Cod sursa (job #571007) | Cod sursa (job #1711429) | Cod sursa (job #338033)
Cod sursa(job #338033)
#include <fstream>
#define Max 101
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
int n,s,l,v[Max],sum[Max*Max*Max];
void citire ()
{
f>>n>>s;
for (int i=1; i<=n; i++)
f>>v[i];
f.close ();
}
void partial_sums ()
{
for (int i=1; i<=n; i++)
for (int j=1; j<=n; j++)
for (int k=1; k<=n; k++)
sum[++l]=v[i]+v[j]+v[k];
}
int bin_search (int x,int i,int j)
{
int mid;
while (i<=j)
{
mid=i+(j-i)/2;
if (x<=sum[mid]) j=mid-1;
else i=mid+1;
}
return (x==sum[i]);
}
int write_numbers ()
{
for (int i=1; i<=n; i++)
for (int j=1; j<=n; j++)
for (int k=1; k<=n; k++)
if (bin_search (s-v[i]-v[j]-v[k],1,l))
{
int aux=s-v[i]-v[j]-v[k];
for (int p=1; p<=n; p++)
for (int q=1; q<=n; q++)
for (int r=1; r<=n; r++)
if (aux==v[p]+v[q]+v[r])
g<<v[i]<<" "<<v[j]<<" "<<v[k]<<" "<<v[p]<<" "<<v[q]<<" "<<v[r];
return 1;
}
return 0;
}
int main ()
{
citire ();
partial_sums ();
sort (sum+1,sum+l);
if (!write_numbers ())
g<<-1;
g.close ();
return 0;
}