Cod sursa(job #1026763)

Utilizator ionut.picpopa ionut cristian ionut.pic Data 11 noiembrie 2013 22:47:38
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
using namespace std;
int v[16001],n,k;
int verif(int cap)
{
    int i;
    int dr=1,sal=0;
    for(i=1;i<=n;i++)
        if(v[i]+sal<=cap)
            sal+=v[i];
        else
        {
            dr++;
            i--;
            sal=0;
        }
    if(dr<=k)
        return 1;
    return 0;
}
int cauta(int st,int dr)
{
    if(st>dr)
        return st;
    int mij=(st+dr)/2;
    if(verif(mij))
        return cauta(st,mij-1);
    else
        return cauta(mij+1,dr);
}
int main()
{
    int max1,i,s;
    ifstream fin("transport.in");
    ofstream fout("transport.out");
    max1=0;
    s=0;
    fin>>n>>k;
    for(i=1;i<=n;i++)
    {
        fin>>v[i];
        s+=v[i];
        if(max1<v[i])
            max1=v[i];
    }
    fin.close();
    fout<<cauta(max1,s);
    return 0;
}