Cod sursa(job #1711622)

Utilizator minut1Baies Cosmin minut1 Data 31 mai 2016 20:01:13
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>

using namespace std;

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

int v[16300];

int verif(int n,int nr)
{
    int drum=0,sc=0,i;
    for(i=1; i<=n; i++)
    {
        sc+=v[i];
        if(sc==nr)
        {
            sc=0;
            drum++;
        }
        else if(sc>nr)
        {
            sc=v[i];
            drum++;
        }
    }
    if(sc!=0)
        drum++;
    return drum;
}

int main()
{
    int n,k,i,max=-1,nr,pas;
    cin>>n>>k;
    for(i=1; i<=n; i++)
    {
        cin>>v[i];
        if(v[i]>max)
        max=v[i];
    }
    nr=max;
    pas=1<<16;
    while(pas!=0)
    {
        if((nr+pas>max+pas)&&verif(n,nr+pas)<=k)
            nr+=pas;
        pas/=2;
    }
    //while(verif(n,nr)>k)
    //        nr++;
    cout<<nr+1;
    cin.close();
    cout.close();
    return 0;
}