Pagini recente » Cod sursa (job #1788310) | Cod sursa (job #2299377) | Cod sursa (job #315482) | Cod sursa (job #678603) | Cod sursa (job #2787537)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("loto.in");
ofstream cout("loto.out");
int n,sum;
int v[101];
int frecv[101]={0};
bool visited[101]={0};
bool gata = false;
const int TOTAL = 6;
int currentSum=0;
int currentCount=0;
bool isOK(int i)
{
int s = 0,count=0;
if (currentCount < TOTAL && (currentSum + v[i] <= sum))
return true;
return false;
}
bool isDone()
{
/// calculate sum of visited
if(currentCount == TOTAL && currentSum == sum)
return true;
return false;
}
void display()
{
for(int i = 0 ; i < n ; i++)
{
while(frecv[i]>0)
{
cout << v[i] <<" ";
frecv[i]--;
}
}
}
void back()
{
/// base condition
if(isDone() && !gata)
{
gata = true;
display();
return;
}
/// recursive function
for(int i = 0 ; i < n ; i++)
{
if ( isOK(i))
{
frecv[i]++;
currentCount++;
currentSum+=v[i];
back();
frecv[i]--;
currentCount--;
currentSum-=v[i];
}
}
}
int main()
{
cin>>n>>sum;
for(int i =0 ; i < n ; i++)
cin>>v[i];
sort(v,v+n);
back();
if(!gata)
cout<<"-1";
return 0;
}