Pagini recente » Cod sursa (job #2815113) | Cod sursa (job #199758) | Cod sursa (job #414871) | Cod sursa (job #1195729) | Cod sursa (job #1049869)
#include <fstream>
using namespace std;
int main()
{
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int n,k,end=0,start=0,count,p=0,temp,mid=0;
fin>>n>>k;
int a[n];
for(int i=0;i<n;i++)
{
fin>>a[i];
end+=a[i];
if(start<a[i]) start=a[i];
}
while(1)
{
mid=(start+end)/2;
temp=mid;
count=0;
for(int i=0;i<n;i++)
{
//if(mid==6) fout<<temp<<" ";
if(temp-a[i]>=0) temp-=a[i];
if(i!=n-1&&temp-a[i+1]<0)
{
temp=mid;
count++;
}
if(temp>=0&&i==n-1) count++;
}
if(count>k)
{
start=mid+1;
}
else if(count==k)
{
p=mid;
end=mid;
}
else if(count<k)
{
end=mid-1;
}
if(start>=end) break;
}
fout<<p;
}