Cod sursa(job #1022393)

Utilizator CatalinaRaduCatalina Elena Radu CatalinaRadu Data 5 noiembrie 2013 12:51:40
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream f ("transport.in");
ofstream g ("transport.out");

int n,k;
int vol[16001];

int check (int cnt)
{
    int drumuri=1,salt=0,i;
    for (i=1;i<=n;i++)
        if(salt+vol[i]<=cnt)
       salt+=vol[i];
       else
       {
           drumuri++;
           salt=0;
           i--;
       }
    if (drumuri<=k)
        return 1;
    return 0;
}

int bin_search(int left, int right)
{
    int mid;
    if(left>right)
        return left;
    mid= (left+right)/2;
    if(check(mid))
       return bin_search(left,mid-1);
    else
        return bin_search(mid+1,right);

}

int main()
{
    f>>n>>k;
    int s, maxim,i;
    s=0;
    maxim=0;
    for (i=1;i<=n;i++)
       {
           f>>vol[i];
           s+=vol[i];
           if(vol[i]>maxim)
            maxim=vol[i];
       }
    g<<bin_search(maxim,s);
    f.close();
    g.close();

    return 0;
}