Pagini recente » Cod sursa (job #1578794) | Cod sursa (job #2055383) | Cod sursa (job #829892) | Cod sursa (job #404536) | Cod sursa (job #2279669)
#include<fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int a[16004], n, i, c, st, mij, dr, ans;
int transport(int n, int a[], int x)
{
int cnt=0;
int sum=0;
for(int i=1; i<=n-1; i++)
{
if(a[i]>x)
{
return 0;
}
if(sum+a[i]==x)
{
cnt++;
sum=0;
continue;
}
if(sum+a[i]<x)
{
sum=sum+a[i];
}
if(sum+a[i+1]>x)
{
cnt++;
sum=0;
continue;
}
}
if(sum+a[n]<=x)
{
cnt++;
}
return (cnt<=c);
}
int main()
{
fin>>n>>c;
dr=0;
for(i=1;i<=n;i++)
{
fin>>a[i];
dr+=a[i];
}
st=1;
ans=0;
while(st<=dr)
{
mij=st+(dr-st)/2;
if(transport(n,a,mij)==1)
{
ans=mij;
dr=mij-1;
}
else
{
st=mij+1;
}
}
fout<<ans;
fin.close();
fout.close();
return 0;
}