Pagini recente » Cod sursa (job #1741598) | Cod sursa (job #1389108) | Cod sursa (job #2286323) | Cod sursa (job #2787529)
#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;
bool isOK(int i)
{
int s = 0,count=0;
/// calculate sum of elements and count them
for(int i = 0 ; i < n ; i++)
{
if(frecv[i]>0)
{
s+=v[i]*frecv[i];
count+=frecv[i];
}
}
if (count < TOTAL && (s + v[i] <= sum))
return true;
return false;
}
bool isDone()
{
/// calculate sum of visited
int s=0,count=0;
for(int i = 0 ; i < n ; i++)
{
if(frecv[i]>0)
{
s+=v[i]*frecv[i];
count+=frecv[i];
}
}
if(count == TOTAL && s == 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]++;
back();
frecv[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;
}