Pagini recente » Cod sursa (job #2585169) | Cod sursa (job #3288803) | Cod sursa (job #1626681) | Cod sursa (job #2249709) | Cod sursa (job #1560345)
#include <bits/stdc++.h>
using namespace std;
FILE*f=fopen("loto.in","r"),*g=fopen("loto.out","w");
int n, s;
int V[105], ST[10];
void afisare()
{
for(int i = 6; i >= 1; i--)
{
fprintf(g,"%d ",ST[i]);
}
}
int generare(int nr, int sum)
{
if(nr == 6)
{
if(sum == 0)
{
afisare();
return -1;
}
}
else
{
int u = 1, p = n, mij;
while(u <= p)
{
mij = (u + p)/2;
if(V[mij] == sum )
if(nr == 5)
{
nr++;
ST[nr] = V[mij];
afisare();
return -1;
}
else
{
p = mij-1;
break;
}
else if(V[mij] > sum)
{
p = mij - 1;
}
else if(V[mij] < sum)
{
u = mij +1;
}
}
for(int i = p ; i >= 1; i--)
{
nr++;
ST[nr] = V[i];
if(generare(nr, sum - V[i]) == -1) return -1;
nr--;
}
}
return 0;
}
int main()
{
fscanf(f, "%d %d", &n, &s);
for(int i = 1; i <= n; i++)
{
fscanf(f, "%d", &V[i]);
}
sort(V+1, V+n+1);
int nr = 0;
for(int i = n; i >= 1; i--)
{
if(generare(nr, s) == -1)
{
return 0;
}
}
fprintf(g,"-1");
return 0;
}