Cod sursa(job #1346616)
| Utilizator | Data | 18 februarie 2015 14:14:17 | |
|---|---|---|---|
| Problema | Transport | Scor | 80 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.72 kb |
#include <iostream>
#include <cstdio>
#include <fstream>
using namespace std;
ofstream g("transport.out");
int N, K, a[16001], S, maxim, li, ls, m, k, i;
int main()
{
freopen("transport.in", "r", stdin);
scanf("%d %d", &N, &K);
for(i=1; i<=N; i++)
{
scanf("%d", &a[i]);
if(a[i]>maxim) maxim=a[i];
S+=a[i];
}
li=maxim;
ls=S;
while(li<=ls)
{
m=(li+ls)/2;
S=0;
k=0;
for(i=1; i<=N; i++)
{
if(S+a[i]<=m) S+=a[i];
else
{
S=a[i];
k++;
}
}
if(k>=K) li=m+1;
else ls=m-1;
}
g<<m;
return 0;
}
