Cod sursa(job #1447459)

Utilizator cristina_borzaCristina Borza cristina_borza Data 4 iunie 2015 15:19:56
Problema Transport Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>

using namespace std;

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

int n , k , sum , a[17000] , maxi;

void caut_bin();
int verif(int x);

int main()
{
    int i ;
    f >> n >> k;
    for(i = 1 ; i <= n ; ++i){
        f >> a[i];
        sum += a[i];
        maxi = max (maxi , a[i]);
    }
    caut_bin();
    return 0;
}

void caut_bin(){
    int i = 0 , p = 0 ;
    for(i = 1 ; i <= sum ; i*=2);
    while(i >= maxi){
        if(verif(p + i) > k){
            p += i ;
        }
        i /= 2;
    }

    while(verif(p) > k){
        ++p;
    }
    if(p < maxi)
        g << maxi;
    else
        g << p;
}

int verif(int x){
    int i , s = 0 , nr = 1;
    for(i = 1 ; i <= n ; ++i){
        if(s + a[i] <= x){
            s += a[i] ;
        }
        else{
            s = a[i];
            ++nr;
        }
    }
    return nr;
}