Cod sursa(job #572516)

Utilizator mionelIon. M mionel Data 5 aprilie 2011 12:59:49
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<iostream>
#include<fstream>
#include<stdio.h>
using namespace std;
int n,k,salt[20000];
int caut()
{
	int suma,maxim=-20000,capac=20000,varf,l,i,s=0;
	for(i=1;i<=n;i++)
		{
			if(salt[i]>maxim)
				maxim=salt[i];
			s=s+salt[i];
		}
	int cs=maxim, cd= s;
	int gata=1;
	while (cs<=cd)
	{
     l= (cs+cd)/2;	
		varf=0;
		suma=0;
			for(i=1;i<=k;i++)
			{
				suma=0;
				do
				{
					varf++;
					suma=suma+salt[varf];
					
				}
				while((suma<=l)&&(varf<=n));
				varf--;
			}
			if (varf <n)
				cs=l+1;
			else
			 if(varf==n)
			 {	
				 cd=l-1;
				 //if(l<capac)
				//	capac=l;
			 }
			
			
 				
	}
	return l;
}
int main()
{
	ifstream f("transport.in");
	ofstream g("transport.out");
	f>>n>>k;
	int i;
	for(i=1;i<=n;i++)
		f>>salt[i];
	g<<caut();
}