Cod sursa(job #639853)
| Utilizator | Data | 24 noiembrie 2011 01:26:44 | |
|---|---|---|---|
| Problema | Transport | Scor | 80 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.63 kb |
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n,k,a[20000];
int numar(int t)
{
int s=0,i,nr=1;
for (i=0; i<n; i++)
if (s+a[i]>t)
{
s=a[i];
nr++;
} else s+=a[i];
return nr;
}
int capacitatea()
{
int s=0,i;
for (i=0; i<n; i++)
s+=a[i];
int l=0, r=s, t;
while (l<r)
{
t=(l+r)/2;
if (numar(t)<=k) r=t; else l=t+1;
}
return (l+r)/2;
}
int main()
{
f >> n >> k;
for (int i=0; i<n; i++)
f >> a[i];
g << capacitatea();
}
