Cod sursa(job #1801111)
| Utilizator | Data | 8 noiembrie 2016 17:54:51 | |
|---|---|---|---|
| Problema | Transport | Scor | 80 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.59 kb |
#include <fstream>
using namespace std;
ifstream f ("transport.in");
ofstream g ("transport.out");
long long n, k, u, a[16001], p, m, i;
int verif (int m)
{
int s=0, nr=0;
for (int i=n; i>0; i--){
if (s+a[i]<=m) s+=a[i];
else{
s=a[i];
nr++;
}
}
nr++;
if (nr<=k) return 1;
return 0;
}
int main ()
{
f >> n >> k;
u=0;
for (i=n; i>0; i--)
f >> a[i], u+=a[i];
p=1;
while (p<=u){
m=p+(u-p)/2;
if (verif(m)) u=m-1;
else p=m+1;
}
g << p;
}
