Cod sursa(job #1453300)

Utilizator savinvadim1312savin vadim savinvadim1312 Data 23 iunie 2015 10:43:13
Problema Transport Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>

using namespace std;

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

long int N,t[16005],s,K,m;


int Div(int low,int high){
    int mid,nr,q;
    if(low>=high){
       q=0;nr=1;
        for(int i=0;i<N;i++){
            q+=t[i];
            if(q+t[i+1]>high){
                nr++;
                q=0;
            }
        }
        if(nr<=K)
            return high;
        else return low;
    }
    mid=(high+low)/2;

    q=0;nr=1;
    for(int i=0;i<N;i++){
        q+=t[i];
        if(q+t[i+1]>mid){
            nr++;
            q=0;
        }
    }
    if(nr>K)
        return Div(mid+1,high);
    else
        return Div(low,mid-1);

}

int main()
{
    f>>N>>K;
    s=0;m=0;
    for(int i=0;i<N;i++){
        f>>t[i];
        s+=t[i];
        if(t[i]>m)
            m=t[i];
    }



    g<<Div(m,s);


    return 0;
}