Cod sursa(job #2345656)
Utilizator | Data | 16 februarie 2019 16:04:08 | |
---|---|---|---|
Problema | Loto | Scor | 60 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 4.35 kb |
#include <cstdio>
#include <algorithm>
#include<ctime>
using namespace std;
int v[105];
int n,s,con,sol=0,c1,r1,c2,r2,nr1,nr2,nr3,nr4,nr5,nr6;
unsigned long long int start,fin;
int main()
{
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
int i,x,x2,x3;
// start=clock();
scanf("%d%d",&n,&s);
con=0;
c1=s/6;
nr1=0;
nr2=0;
for (i=0; i<n; i++)
{
scanf("%d",&x);
if (x<=s-5)
{
v[con]=x;
con++;
}
}
sort (v,v+con);
// fin=clock();
// printf("%d \n",fin-start);
/* if (nr1!=0)
{
if (r1==0)
{
for (i=1; i<=6; i++)
printf("%d ",nr1);
return 0;
}
else
{
if (nr2!=0)
{
for (i=1; i<=5; i++)
printf("%d ",nr1);
printf("%d",nr2);
return 0;
}
}
}*/
///aici
x=0;
for (i=con-1; i>=0; i--)
{
if (v[i]<=c1)
{
x=i;
i=-1;
}
}
int sum=0;
if (v[x]*6==s)
{
printf("%d %d %d %d %d %d",v[x],v[x],v[x],v[x],v[x],v[x]);
return 0;
}
//printf("%d %d",x,v[x]);
for (nr1=x+1; nr1<con; nr1++)
{
for (nr2=0; nr2<=x; nr2++)
{
sum=s-v[nr1]-v[nr2];
if (sum>0)
{
int c2,r2;
c2=sum/4;
r2=sum%4;
x2=0;
for (i=con-1; i>=0; i--)
{
if (v[i]<=c2)
{
x2=i;
i=-1;
}
}
// printf("nr1=%d nr2=%d sum=%d x2=%d v[x2]=%d\n",v[nr1],v[nr2],sum,x2,v[x2]);
if (v[x2]*4==sum)
{
printf("%d %d ",v[nr1],v[nr2]);
for (i=1;i<=4;i++)
{
printf("%d ",v[x2]);
}
return 0;
}
// printf("nr1=%d nr2=%d sum=%d x2=%d v[x2]=%d\n",v[nr1],v[nr2],sum,x2,v[x2]);
for (nr3=x2+1; nr3<con; nr3++)
{
for (nr4=0; nr4<=x2; nr4++)
{
sum=s-v[nr1]-v[nr2]-v[nr3]-v[nr4];
if (sum>0)
{
//int c2,r2;
c2=sum/2;
r2=sum%2;
x3=0;
for (i=con-1; i>=0; i--)
{
if (v[i]<=c2)
{
x3=i;
i=-1;
}
}
if (v[x3]*2==sum)
{
printf("%d %d %d %d %d %d",v[nr1],v[nr2],v[nr3],v[nr4],v[x3],v[x3]);
return 0;
}
// printf("nr3=%d nr4=%d sum=%d\n",v[nr3],v[nr4],sum);
for (nr5=x3+1; nr5<con; nr5++)
{
for (nr6=0; nr6<=x3; nr6++)
{
sum=s-v[nr1]-v[nr2]-v[nr3]-v[nr4]-v[nr5]-v[nr6];
// printf("nr5=%d nr6=%d sum=%d\n",v[nr5],v[nr6],sum);
if (sum==0)
{
sol=1;
printf("%d %d %d %d %d %d\n",v[nr1],v[nr2],v[nr3],v[nr4],v[nr5],v[nr6]);
return 0;
}
//sum=sum+v[nr5]+v[nr6];
}
}
}
// sum=sum+v[nr3]+v[nr4];
}
}
}
// sum=sum+v[nr1]+v[nr2];
}
}
// bac(1,0);
// if (sol==0)
printf("-1");
return 0;
}