Pagini recente » Cod sursa (job #648992) | Cod sursa (job #406374) | Cod sursa (job #1621521) | Cod sursa (job #1152637) | Cod sursa (job #1081751)
#include <fstream>
#include <iostream>
#include <algorithm>
#include <cstdlib>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
const int N=101;
int v[N],s,n,nr, sum[N];
bool cautbin(int s)
{
int i=0, pas = 1 << 17;
while(pas!=0)
{
if(i+pas <=nr && sum[i+pas]<=s)
{
i+=pas;
}
pas/=2;
}
if(sum[i] == s)
return 1;
return 0;
}
int main()
{
in >> n >> s;
for(int i=1;i<=n;i++)
in >> v[i];
in.close();
for(int i=1;i<=n;i++)
for(int j=i;j<=n;j++)
for(int k=j;k<=n;k++)
{
sum[++nr] = v[i]+v[j]+v[k];
}
sort(sum+1,sum+nr+1);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++)
{
if(cautbin(s-v[i]-v[j]-v[k]))
{
out << v[i] << " " << v[j] <<" " << v[k] << " ";
for(int q=1;q<=n;q++)
for(int r=1;r<=n;r++)
for(int o=1;o<=n;o++)
if(v[q]+v[r]+v[o] == s-v[i]-v[j]-v[k])
{
out << v[q] << " "<< v[r] <<" "<< v[o];
out.close();
return 0;
}
}
}
out << -1;
out.close();
return 0;
}