Cod sursa(job #981454)
Utilizator | Data | 7 august 2013 10:39:05 | |
---|---|---|---|
Problema | Transport | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.67 kb |
#include <fstream>
using namespace std;
int a[16005],n,k,s,maxim,m,st,dr,gr,gr2;
int main ()
{
ifstream in("transport.in");
in>>n>>k;
for (int i=1;i<=n;++i)
{
in>>a[i];
s=s+a[i];
if (a[i]>maxim) maxim=a[i];
}
in.close();
ofstream out ("transport.out");
st=maxim; dr=s;
while (st!=dr)
{
m=(st+dr)/2;
gr=0; gr2=0;
for (int i=1;i<=n;++i)
{
gr=gr+a[i];
if (gr>m)
{
gr=a[i];
++gr2;
}
}
if (gr2>=k) st=m+1; else dr=m;
}
out<<st;
out.close();
}