Cod sursa(job #1213329)

Utilizator pavlov.ionPavlov Ion pavlov.ion Data 27 iulie 2014 20:43:21
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<fstream>
#include<algorithm>
using namespace std;
#define MAXN 16005
ifstream cin("transport.in");
ofstream cout("transport.out");
int N,K,A[MAXN];
int incape(int C)
{   int nr=0,S=0,i=1;
 	while(i<=N)
 	    if (S+A[i]<=C)
 	              S+=A[i],i++;
 	    else 
 	       nr++,S=0,S=A[i],i++;
 	if(S>0) nr++;
 if(nr>K) return 1;
 if (nr<K) return 0;
 if (nr==K) return 2;
}
			           
 	
int main() {
int i,j,k,P=0,Q=0,C;
cin>>N>>K;
for(i=1;i<=N;i++) 
                 cin>>A[i],	Q+=A[i];
P=*max_element(A+1,A+N+1);				 
C=0;
  while(incape(C)!=2) {
  		C=(P+Q)/2;			  
  		if(incape(C)==1) P=C;
		if(incape(C)==0)  Q=C;
 }		 			  
  cout<<C;
 return 0;
}