Pagini recente » Cod sursa (job #1918302) | Cod sursa (job #1131176) | Cod sursa (job #2363091) | Cod sursa (job #1381906) | Cod sursa (job #133517)
Cod sursa(job #133517)
#include <cstdio>
#include <algorithm>
const int maxn = 20;
FILE *in = fopen("zebughil.in","r"), *out = fopen("zebughil.out","w");
int n, g;
int a[maxn];
int s[maxn];
int min;
int nrcam;
void readcase()
{
fscanf(in, "%d %d", &n, &g);
for ( int i = 1; i <= n; ++i )
fscanf(in, "%d", &a[i]);
}
int v[maxn];
void back(int k)
{
if ( nrcam > min )
return;
if ( k > n )
{
if ( nrcam < min )
min = nrcam;
return;
}
for ( int i = 1; i <= n; ++i )
if ( !v[i] )
{
++v[i];
if ( a[i] + s[k-1] <= g )
{
s[k] = s[k-1] + a[i];
back(k+1);
}
else
{
++nrcam;
s[k] = a[i];
back(k+1);
--nrcam;
}
--v[i];
}
}
int main()
{
for ( int i = 0; i < 3; ++i )
{
readcase();
min = 1 << 30;
nrcam = 1;
std::sort(a+1, a+n+1);
back(1);
fprintf(out, "%d\n", min);
}
return 0;
}