Cod sursa(job #560191)

Utilizator alexamiu2008Miu Alexandra alexamiu2008 Data 18 martie 2011 13:01:09
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include<stdio.h>
FILE*fin,*fout;
long int n, k,k1,i,v[16001],min,t,u,p,m,nr,max,s;
 int main(){
fin=fopen("transport.in","r");
fout=fopen("transport.out","w");
fscanf(fin,"%ld %ld",&n,&k);
for(i=1;i<=n;i++){
 fscanf(fin,"%ld ",&v[i]);
  if(v[i]>max){max=v[i];}
   v[i]=v[i]+v[i-1];

}
 u=max; p=v[n];
 min=16001;

 while(u<=p){
	m=(u+p)/2;
k1=0;    nr=0;
	for(i=1;i<=n; ){
	   
	   while(v[i]-v[k1]<=m&&i<=n){
	   i++;
	   }
	   nr++;
	   k1=i-1;


	}

 if(nr>k){u=m+1;}
 else{
 if(nr<=k){
 min=m;p=m-1;
      }
 }


 }
fprintf(fout,"%ld",min);
return 0;
}