Cod sursa(job #1517201)

Utilizator codi22FMI Condrea Florin codi22 Data 3 noiembrie 2015 22:46:21
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <cstdio>
using namespace std;
int i,V[1600001],n,k,mn,mx,k1,sum,mij,s;
bool verificare(int k,int s)
{
    int i=0,sum;
    while(k>0 && i<=n)
    {
        sum=0;
        while(sum<s && i<n)
        {
            i++;
            sum+=V[i];
        }
        if(sum>s) i--;
        k--;
    }
    if(i<n) return 0;
        else return 1;
}
int main()
{
    int i,mx=0,suma=0,mn,mij;
    freopen("transport.in","r",stdin);
    freopen("transport.out","w",stdout);
    scanf("%i %i",&n,&k);
    for(i=1;i<=n;i++)
    {
        scanf("%i",&V[i]);
        if(V[i]>mx) mx=V[i];
        suma+=V[i];
    }
    mn=suma;
    while(mx<suma)
    {
        mij=(mx+suma)/2;
        if(verificare(k,mij)==0)
        {
            mx=mij+1;
        }else{
            mn=mij;
            suma=mij;
        }
    }
   cout<<mn;
}