Cod sursa(job #129202)

Utilizator DITzoneCAdrian Diaconu DITzoneC Data 28 ianuarie 2008 19:18:23
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.52 kb
#include <stdio.h>
#define nmax 16011
#define pt(i) (1<<(i))

int n,k,a[nmax],sol;

int test()
{
	int i,j,t;
	for(t=i=1,j=0;i<=n;i++)
	{
		if(j+a[i]>sol)
			j=0,i--,t++;
		else 
			j+=a[i];	
		if(t>k)
			return(0);
	}
	return(1);
}

int main()
{
	FILE *fi=fopen("transport.in","r"),*fo=fopen("transport.out","w");
	fscanf(fi,"%d %d",&n,&k);
	int i;
	for(i=1;i<=n;i++)
		fscanf(fi,"%d",&a[i]);
	fclose(fi);
	for(sol=0,i=29;i>=0;i--)
	{
		sol+=pt(i);
		if(test())
			sol-=pt(i);
	}
	fprintf(fo,"%d\n",sol+1);
	fclose(fo);
	return(0);
}