Cod sursa(job #1146550)

Utilizator iarbaCrestez Paul iarba Data 19 martie 2014 08:55:02
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <cstdio>
using namespace std;
int a[16001],k,n,i,s;
void search(int st, int sf)
{
	if(st==sf){printf("%ld",st);return;}
	int sum=(st+sf)/2;
	int q=0,kk=k,rez=1;
	for(i=1;i<=n;i++){
		q+=a[i];
		if(q>sum){
			q=a[i];
			kk--;
			if(q>sum){rez=0;i=n;}
				 }
					 }
	if(q>0){
		q-=sum;
		kk--;
		   }
	if(q>0){
		rez=0;
		   }
	if(kk<0){rez=0;}
	if(rez==0){search(sum+1,sf);}
	else{search(st,sum);}
}
int main()
{
	freopen("transport.in","r",stdin);
	freopen("transport.out","w",stdout);
	scanf("%ld%ld",&n,&k);
	for(i=1;i<=n;i++){scanf("%ld",&a[i]);s+=a[i];}
	search(1,s);
return 0;
}