Cod sursa(job #2060996)

Utilizator dragos.galeteanu2001Dragos Iulian dragos.galeteanu2001 Data 8 noiembrie 2017 20:47:17
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int v[16000];
int main()
{
    int N, K, i, j, k;
    long int dr=0, st=0, mijloc=0, S, c;
    f>>N>>K;

    for (i=0; i<N; i++) {
            f>>v[i];
            if (v[i]>st) st=v[i];
            dr+=v[i]; }

    while (st<=dr)
    { mijloc=(st+dr)/2;
    k=1; j=0;

    while (k<=K) {
            for (i=j, S=0; i<N && S<=mijloc; i++) S+=v[i];
    if (S>mijloc) { j=i-1; k++; }
    else break; }

    if (k>K) st=mijloc+1;
    if (k==K) { c=mijloc; dr=mijloc-1; }
    if (k<K) dr=mijloc-1;}

    g<<c;
    f.close();
    g.close();
    return 0; }