Cod sursa(job #340472)

Utilizator bugyBogdan Vlad bugy Data 14 august 2009 18:59:36
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<iostream>
using namespace std;

int n,s,kk,k,i,v[16001],maxim=0,jum ;
int m(int max)
{	s=0;kk=0; 
	for(i=1;i<=n;i++)
		{
			s=s+v[i];
			if(s>max) {kk++;i--; s=0;}
			else if(s==max) 
			{s=0; kk++;}  
			
		}
	
	kk++;
	return kk;
}

int caut(int li, int ls)   
{   
      
       
    jum = ( li + ls ) / 2;   
       
    while(li < ls)   
    {   
             if( m(jum) > k )  li = jum + 1;   
                 else ls = jum;   
                    
             jum = ( li + ls ) / 2;   
    }   
      
    return 0;   
}   
  
int main()
{
	int suma=0;
FILE *f=fopen("transport.in","r"), *g=fopen("transport.out","w");
fscanf(f,"%d%d",&n,&k);

for(i=1;i<=n;i++)
	{fscanf(f,"%d",&v[i]);
	if(v[i]>maxim) maxim=v[i];
	suma+=v[i];}
	
caut(maxim,suma);
	fprintf(g,"%d\n",jum);
	


fclose(f);
fclose(g);

return 0;}