Cod sursa(job #1009146)

Utilizator felixiPuscasu Felix felixi Data 12 octombrie 2013 15:50:36
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include<fstream>
using namespace std;

int v[16002];

int verificare(int nr, int k,int n){
    int i=1,s=0,pok=0;

    for(i=1;i<=n;i++){

        if(v[i]>nr)return 0;


        if(s+v[i]>nr){
            s=v[i];
            pok++;
        }
        else s+=v[i];
    }



    if(pok+1>k) return 0;
    else return 1;
}



int main(){
    ifstream in("transport.in");
    ofstream out("transport.out");
    int i,s=0,p=0,k,n,mx=0,rasp=0;
    in>>n>>k;
    for(i=1;i<=n;i++){
        in>>v[i];
    }
    int stanga=1, dreapta=2000000000,  loc;
    while(dreapta-stanga>=0){
        if(verificare((stanga+dreapta)/2, k, n)==0){
            stanga=(stanga+dreapta)/2+1;
        }
        else dreapta=(stanga+dreapta)/2-1;
    }
    out<<dreapta+1;
    in.close();
    out.close();
    return 0;
}