Pagini recente » Monitorul de evaluare | Diferente pentru olimpici intre reviziile 180 si 104 | Cod sursa (job #1753889) | Cod sursa (job #134364) | Cod sursa (job #1701549)
#include <iostream>
#include<fstream>
#include<climits>
using namespace std;
int p,u,m,i,v[16005],n,k;
bool check()
{
int trans=1,sum=0;
for(i=1;i<=n;i++)
{
if(sum+v[i]>m) {trans++;sum=v[i];}
else sum+=v[i];
if(trans>k) return 0;
}
return 1;
}
int main()
{
ifstream f("transport.in");
ofstream g("transport.out");
p=0;u=INT_MAX;
f>>n>>k;
for(i=1;i<=n;i++) f>>v[i];
while(u-p>1)
{
m=(p+u)/2;
if(check()) u=m;
else p=m;
}
g<<u;
return 0;
}