Pagini recente » Cod sursa (job #3265933) | Cod sursa (job #1748257) | Cod sursa (job #2972766) | Cod sursa (job #2692220) | Cod sursa (job #2154209)
#include<bits/stdc++.h>
#define pb push_back
#define maxn 110
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
int n,a[maxn],s,auxs;
queue < int > q;
void caut01(int x)
{
size_t st = 1,dr = n,m;
while(st <= dr)
{
m = (st + dr) / 2;
if(a[m] == x)
{
q.push(a[m]);
auxs -= a[m];
return ;
}
else
{
if(a[m] > x)
dr = m - 1;
else
st = m + 1;
}
}
auxs -= a[m];
q.push(a[m]);
}
int main()
{
size_t i;
f>>n>>s;
for(i = 1; i <= n; i ++)
{
f>>a[i];
if(6 * a[i] == s)
{
for(size_t j = 1; j <= 6; j ++)
{
g<<a[i]<<" ";
}
return 0;
}
}
sort (a + 1, a + n + 1);
if(a[n] * 6 < s)
{
g<<"-1";
return 0;
}
auxs = s;
size_t loc = 1,start = 6;
while(auxs != 0)
{
for(i = start; i >= 1; i --)
{
caut01(auxs / i);
if(auxs < 0)
break;
}
if(auxs != 0)
{
q = queue < int >();
auxs = s;
auxs -= a[loc];
q.push(a[loc]);
loc ++;
start --;
}
}
while(!q.empty())
{
size_t x;
x = q.front();
q.pop();
g<<x<<" ";
}
}