Cod sursa(job #1009160)

Utilizator gedicaAlpaca Gedit gedica Data 12 octombrie 2013 16:01:21
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<fstream>
using namespace std;
int a[16001],n,k,i;
int verificare(int x)
{
    int nr=0,s=0,i;
    for(i=0;i<n;i++)
    {
        if(a[i]>x)
            return 0;
        if(s+a[i]>x)
        {
            nr++;
            s=a[i];
        }
        else s+=a[i];
    }
    if(nr+1>k)
        return 0;
    else return 1;
}
int main()
{
    ifstream in("transport.in");
    ofstream out("tranport.out");
    int n,k,maxi=-1,s=0,left=-1,right,mijl;
    in>>n>>k;
    right=2000000;
    for(i=1;i<=n;i++)
    {
        in>>a[i];
        s+=a[i];
        if(a[i]>maxi) maxi=a[i];
    }
    while(left<=right)
    {
        mijl=(left+right)/2;
        if(verificare(mijl)==1)
            right=mijl-1;
        else left=mijl+1;
    }
    out<<left;
    in.close();
    out.close();
    return 0;
}