Pagini recente » Cod sursa (job #2892905) | Cod sursa (job #3140982) | Cod sursa (job #553494) | Cod sursa (job #530405) | Cod sursa (job #2219463)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("transport.in") ;
ofstream g("transport.out") ;
int v[16001],n,k ;
int cautb(int st, int dr)
{
int sum=0,nrtransport=0,i,sol ;
while(st<=dr)
{
nrtransport=0 ;
sum=0 ;
int mij=(st+dr)/2 ;
for(i=1;i<=n;i++)
{
sum=sum+v[i] ;
if(sum>mij)
{
sum=v[i] ;
nrtransport++ ;
if(i==n) nrtransport++ ;
}
else if(sum==mij)
{
sum=0 ;
nrtransport++ ;
}
else if(i==n) nrtransport++ ;
}
if(nrtransport<=k)
{
sol=mij ;
dr=mij-1 ;
}
else st=mij+1 ;
}
return sol ;
}
int main()
{
int sum=0, i, maxi=-1 ;
f>>n>>k ;
for(i=1;i<=n;i++)
{
f>>v[i] ;
if(v[i]>maxi) maxi=v[i] ;
sum=sum+v[i] ;
}
int m=cautb(maxi,sum) ;
g<<m ;
return 0 ;
}