Cod sursa(job #217564)

Utilizator lamez0rBogdan Bondor lamez0r Data 28 octombrie 2008 22:04:02
Problema Zebughil Scor 10
Compilator c Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<stdio.h>
int n,poz,uz[19],selectie[19];
long v[18],gr,x[18],min=2000000000;
FILE *f,*g;

void read ()
	{
	fscanf(f,"%d%ld",&n,&gr);
	int i;
	for (i=1;i<=n;++i)
		fscanf(f,"%ld",&v[i]);
	}

void solve ()
	{
	int i,nr=1;
	long inainte=0;
	for (i=1;i<=n;++i)
		x[i]=v[selectie[i]];
	for (i=1;i<n;)
		{
		while (inainte+x[i]<=gr&&i<=n)
			{
			inainte+=x[i];
			i++;
			//if (i==n+1)
				//nr++;
			}
		if (i<=n)
			{
			nr++;
			inainte=0;
			//i++;
			}
		}
	if (nr<min)
		min=nr;
	}


void back (int k)
	{
	int i;
	if (k==n+1)
		solve ();
	else
		for (i=1;i<=n;++i)
			if (!uz[i])
				{
				uz[i]=1;
				selectie[++poz]=i;
				back(k+1);
				uz[i]=0;
				poz--;
				}
	}

void write ()
	{ fprintf(g,"%d\n",min); }

int main ()
{
int i;
f=fopen("zebughil.in","r");
g=fopen("zebughil.out","w");
read ();
back (1);
write ();
min=2000000000;
poz=0;
for (i=1;i<=18;++i)
	uz[i]=0;
read ();
back (1);
write ();
min=2000000000;
poz=0;
for (i=1;i<=18;++i)
	uz[i]=0;
read ();
back (1);
write ();
fclose(f);
fclose(g);
return 0;
}