Cod sursa(job #1053206)

Utilizator Yasin_ibraimIbraim Yasin Yasin_ibraim Data 12 decembrie 2013 15:21:48
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>

using namespace std;

ifstream fin ("transport.in");
ofstream fout ("transport.out");

int main()
{
    int n,k,sf=0,start=0,c,q=0,x,mij=0;
    fin>>n>>k;
    int a[n];
    for(int i=0;i<n;i++)
    {
        fin>>a[i];
        sf+=a[i];
        if(start<a[i]) start=a[i];
    }
    while(1)
    {
        mij=(start+sf)/2;
        x=mij;
        count=0;
        for(int i=0;i<n;i++)
        {
            if(x-a[i]>=0) x-=a[i];
            if(i!=n-1&&x-a[i+1]<0)
            {
                x=mij;
                c++;
            }
            if(x>=0&&i==n-1) c++;
        }
        if(c>k)
            start=mij+1;
        else if(c==k)
        {
            q=mij;
            sf=mij;
        }
        else if(c<k)
        {
            sf=mij-1;
        }
        if(start>=sf) break;
    }
    fout<<q;
}