Cod sursa(job #2279684)

Utilizator IordachescuAncaFMI Iordachescu Anca Mihaela IordachescuAnca Data 9 noiembrie 2018 21:20:44
Problema Transport Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<fstream>
using namespace std;

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

int a[16004], n, i, c, st, mij, dr, ans;
int transport(int n, int a[], int x)
{
    int cnt=0;
    int sum=0;
    for(i=1;i<=n;i++)
    {
        if(a[i]>x)
        {
            return 0;
        }
        if(sum+a[i]<=x)
        {
            sum+=a[i];
        }
        else
        {
            cnt++;
            sum=a[i];
        }
    }
    return (cnt<=c);
}
int main()
{
    fin>>n>>c;
    dr=0;
    for(i=1;i<=n;i++)
    {
        fin>>a[i];
        dr+=a[i];
    }
    st=1;
    ans=0;
    while(st<=dr)
    {
        mij=st+(dr-st)/2;
        if(transport(n,a,mij)==1)
           {
               ans=mij;
               dr=mij-1;
           }
            else
            {
                st=mij+1;
            }
    }
    fout<<ans;
    fin.close();
    fout.close();
    return 0;
}