Cod sursa(job #815619)

Utilizator ade_tomiEnache Adelina ade_tomi Data 17 noiembrie 2012 11:25:30
Problema Transport Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<stdio.h>
int v[16001],i,j,max,nr,st,dr,s2,s,pp,m,n,k,cate,vm;
int main()
{
	FILE *f,*g;
	f=fopen("transport.in","r");
	g=fopen("transport.out","w");
	fscanf(f,"%d%d",&n,&k);
	for(i=1;i<=n;i++)
	{
		fscanf(f,"%d",&v[i]);
		if(v[i]>max) max=v[i];
		s+=v[i];
	}
	st=max-1;
	dr=s+1;
	while(st<=dr)
	{
		vm=m;
		m=(st+dr)/2;
		cate=1;
		s2=0;
		for(j=1;j<=n;j++)
		{
			
			if(v[j]+s2<=m)
				s2+=v[j];
			else
			{
				cate++;
				s2=v[j];
			}
			
			
		}
			if(cate<=k) 
			{
				dr=m-1;
			}
			else st=m+1;
			
	}
	if(cate!=k)
		fprintf(g,"%d",vm);
	else
	if(m<max) fprintf(g,"%d",max);
	else  fprintf(g,"%d",m);
	return 0;
}