Cod sursa(job #1949326)

Utilizator ciutanpCiuta Andrei Calin ciutanp Data 1 aprilie 2017 22:07:39
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<bits/stdc++.h>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.in");
int v[22552],n,suma,maxim,sol,k;
int main()
{
    f>>n>>k;
    for(int i=1;i<=n;++i)
    {
        f>>v[i];
        suma+=v[i];
        maxim=maxim>v[i]?maxim:v[i];
    }
    int stanga=maxim;
    int dreapta=suma;
    while(stanga<=dreapta)
    {
        int mij=stanga+(dreapta-stanga)/2;
        int s=0;
        int mis=0;
        for(int i=1;i<=n;++i)
        {
            s+=v[i];
            if(s==mij)
            {
                mis++;
                s=0;
            }
            if(s>mij)
            {
                mis++;
                s=v[i];
            }
        }
        if(s>0)
            mis++;
        if(mis<=k)
        {
            sol=mij;
            dreapta=mij-1;
        }
        else
            stanga=mij+1;
    }
    g<<sol;
}