Cod sursa(job #1521550)

Utilizator emiiMihailescu Ionut Emanuel emii Data 10 noiembrie 2015 17:23:35
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n,k,v[16006];
bool verific (int x){
int nr=0,i=1,t=0;
while(i<=n&&nr<=k){
    if(t+v[i]<=x)
        t+=v[i];
    else
        nr++,t=0,i--;
    i++;
}
if(t!=0)
    nr++;
if(nr<=k)
    return true;
else
    return false;
}
int main()
{int l=0,r=0;
f>>n>>k;
for(int i=1;i<=n;i++){
    f>>v[i];
    if(l<v[i])
        l=v[i];
    r+=v[i];
}
/*if(r%k!=0)
    r/=k+1;
else
    r/=k;*/
if(l>r)
    {int aux=r;
    r=l;
    l=aux;}
while(l<=r){
    int mij=(l+r)/2;
    if(verific(mij))
        r=mij-1;
    else
        l=mij+1;
}
g<<l;
return 0;
}