Cod sursa(job #472767)

Utilizator andra23Laura Draghici andra23 Data 26 iulie 2010 16:18:50
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<iostream>
#include<fstream>

using namespace std;

int a[16010];

int tryvol(int n, int k, int vol){
    int i, j, cod = 1, v;
    i = 1;
    j = 0;
    while (i <= n){
        v = 0;
        if (j < k){
            j++;
            while ( (i <= n) && (v + a[i] <= vol) ){
                v = v + a[i]; 
                i++;
            }       
        }
        else {
            cod = 0;
            break;
        }
    }
    return cod;
}

int main(){
    ifstream f("transport.in");
    ofstream g("transport.out");
    int n, x, k, s = 0, max = 0, m, sol;
    f>>n>>k;
    int i, j;
    for (i = 1; i <= n; i++){
        f>>a[i];
        s = s + a[i];
        if (a[i] > max)
            max = a[i];
    }
        
    int p = max, u = s;
    
    while (p <= u){
        m = (p + u)/2;
        x = tryvol(n, k, m);
        if (x == 0)
            p = m+1;
        else {
            sol = m;
            u = m-1;
        }   
    }
    
    g<<sol<<'\n';
    
    return 0;
}