Cod sursa(job #1034656)

Utilizator PatrunjelFMIAnita Liviu Patrunjel Data 17 noiembrie 2013 23:12:49
Problema Transport Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<iostream>
#include<fstream>
#include<climits>
using namespace std;

ifstream fin("transport.in");
ofstream fout("transport.out");

bool test(long long capacitate,unsigned short saltele[], unsigned short N, unsigned short K){
    unsigned short i;
    int s=0,transporturi=0;

    for(i=0;i<N;i++){
        if(s+saltele[i] <= capacitate)  s+=saltele[i];
        else{
            s=saltele[i];
            transporturi++;
        }
        if(saltele[i]>capacitate) return 0;
    }
    if(s)   transporturi ++;

    return transporturi<=K && transporturi;
}

int main(){
    unsigned short saltele[16000],N,K; //32kb
    long long s=0;
    int i;

    fin>>N>>K;
    for(i=0;i<N;i++){
        fin>>saltele[i];
        s+=saltele[i];
    }

    i=0;
    while(test(s,saltele,N,K))
        s-=saltele[i++];
    s+=saltele[i-1];
    fout<<s<<endl;

    return 0;
}