Cod sursa(job #2219319)

Utilizator mircea.mateiMircea Matei mircea.matei Data 8 iulie 2018 14:02:23
Problema Transport Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int main()
{
    int n,k,i,smax=-1,summ=0,j,ck=0,sol,sol1;
    in>>n;
    in>>k;
    int v[n];
    for(i=1; i<=n; i++)
    {
        in>>v[i];
        if(v[i]>smax)
            smax=v[i];
        summ+=v[i];
    }
    int sc=0;
    while(summ>=smax)
    {
        i=(summ+smax)/2;
        ck=0;
        sc=0;
        for(j=1; j<=n; j++)
        {
            sc+=v[j];
            if(sc>i)
            {
                ck++;
                sc=v[j];
            }
            else if(sc==i)
            {
                ck++;
                sc=0;
            }
            if(j==n)
                {
                    if(sc==v[j])
                        ck++;
                }
        }
        if(ck<k)
        {
            sol=i;
            summ=(summ+smax)/2-1;
        }
        else if(ck==k)
        {
            sol1=i;
            summ=(summ+smax)/2-1;
        }
        else
            smax=(summ+smax)/2+1;
    }
    out<<sol;
    return 0;
}