Cod sursa(job #1012667)

Utilizator Iulia_ivanaIulia Ivana Iulia_ivana Data 19 octombrie 2013 15:05:28
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<fstream>
using namespace std;

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

int v[16001],n,k,l=0,r=0,cnt=0,ok=1;

int verif2(int x)
{
    int s=0,g=1;
    for(int i=1; i<=n; i++)
    {
        s+=v[i];
        if(s>x)
        {
            g++;
            s=0;
            i--;
        }
    }
    if(g<=k) return 1;
    return 0;
}
int main()
{
    int mid=0;
    in>>n>>k;
    for(int i=1 ;i<=n; i++)
    {
        in>>v[i];
        r+=v[i];
        if(v[i]>l) l=v[i];
    }


    int aux;
    while(l<r)
    {
        mid=(l+r)/2;//out<<"left"<<" "<<l<<" \n";
        //out<<"mid"<<" "<<mid<<" \n";out<<"right"<<" "<<r<<" \n";
        if(verif2(mid)==0)
            l=mid+1;
        else
        {
            aux=mid;
            r=mid;
        }
    }
   /* for(int i=l; i<=r; i++)
    {
        if(verif2(i)==1)
        {
                out<<i;
                break;
        }
    }*/
    out<<aux;
    in.close();
    out.close();
    return 0;
}