Cod sursa(job #1540921)

Utilizator TonyFrumTony Frum TonyFrum Data 3 decembrie 2015 15:07:10
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <iostream>
#include<fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int v[16001],mini,k,n;
void s(int a,int b)
{
    int x=(a+b)/2,t=k,su=0,i;
    for(i=1;i<=n;i++)
    {
        su+=v[i];
        if(su>x)
        {
            su=v[i];
            t--;
        }
    }
    t--;
    if(t<0)
    {
        if((a+b)/2+1<=b)
            s((a+b)/2+1,b);
    }
    else
    {
        mini=x;
        if(a<=(a+b-1)/2)
            s(a,(a+b)/2);
    }
}
int main()
{
    int su=0,maxi=0,i;
    f>>n>>k;
    for(i=1;i<=n;i++)
    {
        f>>v[i];su+=v[i];
        if(maxi<v[i])
            maxi=v[i];
    }
    mini=su;
    s(maxi,su);
    g<<mini;
    return 0;
}