Cod sursa(job #1156472)

Utilizator andreeadeacAndreea Ioana Deac andreeadeac Data 27 martie 2014 18:24:22
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
using namespace std;

ifstream f("transport.in");
ofstream g("transport.out");

int n,k;
int a[16001];

int grupe(int x){
    int nr,st,j;
    nr=1;
    st=0;
    for(j=1;j<=n;j++){
        if(st+a[j]<=x)
            st +=a[j];
        else{
            if(a[j] > x)
                return 1;
            st=a[j];
            nr++;
        }
    }
    if(nr>k)
        return 1;
    else
        return 0;
}

int main()
{
    int i,max=-1,s=0,cod=0,pas=1<<30;
    f>>n>>k;
    for(i=1;i<=n;i++){
        f>>a[i];
        if(a[i]>max)
            max=a[i];
        s += a[i];
    }
    if(k>=n)
        g<<max<<"\n";
    else{
        i=0;
        while( pas!=0){
            if(grupe(i+pas)==1)
                i +=pas;
            pas/=2;
        }
        g<<i+1<<"\n";
    }
    return 0;
}