Cod sursa(job #864225)

Utilizator alexandrabadutBadut Alexandra alexandrabadut Data 24 ianuarie 2013 19:48:17
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<fstream>
using namespace std;
int s,n,k,S,p,u,nr_transporturi,v[16001],i,maxim,m,nr;
ifstream fin("transport.in");
ofstream fout("transport.out");
int main(){
    fin>>n>>k;
    for(i=1;i<=n;i++){
        fin>>v[i];
        if(v[i]>maxim){
            maxim=v[i];
        }
        s=s+v[i];
    }
    p=maxim;
    u=s;
    while(p<=u){
        m=(p+u)/2;
        S=0;
        nr_transporturi=1;
        for(i=1;i<=n;i++){
            if(S+v[i]<=m){
                S=S+v[i];
            }
            else{
                S=v[i]; //salteaua care nu a incaput in transportul precedent
                nr_transporturi++;
            }
        }
        if(nr_transporturi<=k){
            u=m-1;;
        }
        else
            p=m+1;
        if(nr_transporturi==k){
            nr=m;
        }
    }
    fout<<nr;
    return 0;
}