Pagini recente » Cod sursa (job #817548) | Cod sursa (job #1441006) | Cod sursa (job #987007) | Cod sursa (job #1817196) | Cod sursa (job #2217035)
#include<fstream>
#include <iostream>
using namespace std;
#define Q 6
long int sol[7]={0};
long int S;
long int pos[101];int N,n;
void swap(long int &x,long int &y)
{
long int temp;
temp=x;x=y;y=temp;
}
void read()
{
ifstream fin("loto.in");
fin>>N>>S;
for(int i=1;i<=N;i++)
fin>>pos[i];
n=N;
}
void aranjeaza()
{
for(int i=1;i<N;i++)
{
int min=i;
for(int j=i+1;j<=N;j++)
if(pos[j]<pos[min]) min=j;
swap(pos[i],pos[min]);
}
cout<<"test ar";
for(int i=1;i<=N;i++) cout<<pos[i]<<' ';
cout<<endl;
}
void setari()
{
aranjeaza();
bool testdebug=1;
for(int i=N;i>=1;i--)
{
if(6*pos[i]>S) n--;
}
}
int kappa=1;
int valid()
{
for(int i=1;i<=6;i++)
if(!sol[i]) return 0;
if(sol[1]+sol[2]+sol[3]+sol[4]+sol[5]+sol[6]==S)
return 1;
return 0;
}
int plauzibil(int x)
{
long int sumtemp=0;
for(int i=1;i<=x;i++)
{
sumtemp+=sol[i];
if (sumtemp>S) return 0;
}
return 1;
}
ofstream fout("loto.out");
bool arerost=1;
void show()
{
for(int i=1;i<=6;i++)
{
fout<<sol[i]<<' ';
}
arerost=0;
}
int oprire()
{
long int sumatemp=0;
for(int i=1;i<=6;i++)
sumatemp+=sol[i];
if(sumatemp<S) return 1;
return 0;
}
void back(int k,int test)
{
for(int i=test;i>=1&&arerost;i--)
{
sol[k]=pos[i];
if(plauzibil(k))
if(k==6&&valid()) show();
else if(k==6&&oprire()) arerost=0;else
back(k+1,i);
}
}
int main()
{
read();
setari();
cout<<"n"<<n;
back(1,n);
if(arerost) fout<<-1;
}