Cod sursa(job #2187601)
| Utilizator | Data | 26 martie 2018 17:12:18 | |
|---|---|---|---|
| Problema | Transport | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.75 kb |
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n,i,k,a[16004],transp,k1,cnt,mij,p,u,maxim,s;
int main()
{
fin>>n>>k;
for(i=1;i<=n;i++)
{
fin>>a[i];
maxim=max(a[i],maxim);
s+=a[i];
}
p=maxim;
u=s;
while(p<=u)
{
mij=(p+u)/2;
k1=0;
cnt=1;
for(i=1;i<=n;i++)
{
if(a[i]+k1<=mij)
k1+=a[i];
else
{
cnt++;
k1=a[i];
}
}
if(cnt>k)
p=mij+1;
else
{
transp=mij;
u=mij-1;
}
}
fout<<transp;
return 0;
}
