Cod sursa(job #185693)

Utilizator nusmaibunkeleviprofesor cicalescu nusmaibunkelevi Data 25 aprilie 2008 20:54:56
Problema Transport Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<stdio.h>

#define NMAX 16000
#define FIN "transport.in"
#define FOUT "transport.out"

int main(){
freopen(FIN,"r",stdin);
freopen(FOUT,"w",stdout);
int n,nrtr,k,i,v[NMAX],c,j,s=0,vmax=0,sp,ma,gata;
scanf("%d%d",&n,&nrtr);
for(i=0;i<n;i++) {
	scanf("%d",&v[i]);
	if(v[i]>vmax) vmax=v[i];
	s+=v[i];
	}
ma=s/nrtr;
if(ma*nrtr<s) ma++;

if(nrtr==1) c=s;
else if(nrtr>=n) c=vmax;
	 else{
		if(ma>vmax) vmax=ma;
		gata=1;
		for(c=vmax;;c++){
			k=0;
			i=0;
			j=0;
			while(i<n){
				sp=0;
				while(j<n&&sp<c) {sp+=v[j];j++;}
				if(sp>c) j--;
				k++;
				if(k>nrtr) break;
				i=j;
				}
			if(k<=nrtr) break;
			}
		}
printf("%d",c);
return 0;
}