Cod sursa(job #113433)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 10 decembrie 2007 00:29:30
Problema Zebughil Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>
#include <stdlib.h>
int n, g, s[20], v[20], ok, contor;

void citire()
{
	scanf("%d %d", &n, &g);
	for (int i = 1; i <= n; i++) scanf ("%d",v + i);
}

int verif(int nr)
{
	int sum, i, j;
	for (i = 1; i <= nr; i++)
	{
		sum = 0;
		for (j = 1; j <= n; j++) if (s[j] == i) sum += v[j];
		if (sum > g) return 0;
	}
	return 1;
}


void back(int k, int nr)
{
	int i, j;

	if (k > n) {if (verif(nr))
	{
		contor++;
		printf("%d\n",nr);
		if (contor == 3) exit(0);
		citire();
		for (j = 1; j <= n; j++)  back(1,j);	
	}
	}
    else
	{
		for (i = 1; i <= nr; i++)
		{
			s[k] = i;			
			back (k + 1, nr);
			if (ok) break;
		}
	}
}


int main()
{
	freopen("zebughil.in","r",stdin);
	freopen("zebughil.out","w",stdout);

	int z, i;
	for (z = 1; z <= 3; z++)
	{
		citire();
		for (i = 1; i <= n; i++) 
		back(1,i);
	}
	return 0;
}