Cod sursa(job #1038804)

Utilizator AndreeaPanaitAndreea Elena Panait AndreeaPanait Data 21 noiembrie 2013 23:25:39
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<fstream>
using namespace std;

const int Nr1=16001;
int v[Nr1],n,k,i;

int numar_trans(int x)
{
    int s=0,nr=0,i=1;

    while(i<=n)
    {
        if(s+v[i]<=x)
        {
            s+=v[i];
            i++;
        }
        else
        {
            nr++;
            s=0;
        }
    }
    nr++;
    return nr;
}
int cautare(int st, int dr)
{
    while(st!=dr)
    {
        if(numar_trans((st+dr)/2)<=k)
            dr=(st+dr)/2;
        else
            st=(st+dr)/2+1;
    }
    if (numar_trans(st)<=k)
        return st;
    else
        return st+1;
}

int main()
{
int max=0,svector=0;

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

in>>n>>k;
for(i=1;i<=n;++i)
    {
        in>>v[i];
        svector+=v[i];

        if(v[i]>=max)
            max=v[i];
    }

out<<cautare(max,svector)<<'\n';
in.close();
out.close();
return 0;
}