Cod sursa(job #1669199)

Utilizator deliabiancasuciuSuciu delia deliabiancasuciu Data 30 martie 2016 15:07:02
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include<fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int x,v[16005],s,d,n,k;
int transport(int m)
{
    int i=1,t,ti,nr;
    ti=m;t=ti;nr=k;
    while(i<=n&&nr>0)
    {
        if(v[i]<=t){t-=v[i];i++;}
        else {nr--;t=ti;}
    }
    if(i>n) return 1;
    else return 0;
}
int cautbin(int s,int d)
{
    int m;
    while(s<=d)
    {
        m=s+(d-s)/2;
        if(transport(m)==1)
        {
            if(m==s) return m;
            else {
                if(transport(m-1)==0) return m;
                else d=m-1;
            }
        }
        else s=m+1;
    }
}
int main()
{
    int i,r,ma=0;
    long long sum=0;
    f>>n>>k;
    for(i=1;i<=n;i++)
            {f>>v[i];sum+=v[i];if(v[i]>ma) ma=v[i];}
    r=cautbin(ma,sum);
    g<<r;
    return 0;
}