Cod sursa(job #1701550)
Utilizator | Data | 13 mai 2016 14:12:33 | |
---|---|---|---|
Problema | Transport | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.59 kb |
#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(v[i]>m) return 0;
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;
}