Cod sursa(job #2077622)

Utilizator EmplopiStefan Nitu Emplopi Data 28 noiembrie 2017 12:42:02
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>

using namespace std;

int v[16000];

int verif(int rsp, int k, int n){
    int s, i=0;;
    while(k>0){
        s=0;
        while(s+v[i]<=rsp && i<n){
            s+=v[i];
            i++;
        }
        k--;
    }
    if(i==n)
        return 1;

    return 0;
}

int cautbinrasp(int n, int k){
    int poz=0, pas;
    pas=1<<27;
    while(pas!=0){
        if(verif(poz+pas, k, n)==0)
            poz+=pas;
        pas/=2;
    }

    return poz;
}

int main(){
    FILE *fin, *fout;
    int n, k, i;
    fin=fopen("transport.in", "r");
    fout=fopen("transport.out", "w");
    fscanf(fin, "%d%d", &n, &k);
    for(i=0;i<n;i++)
        fscanf(fin, "%d", &v[i]);
    fprintf(fout, "%d", cautbinrasp(n, k)+1);
    fclose(fin);
    fclose(fout);

    return 0;
}