Cod sursa(job #1021154)

Utilizator jul123Iulia Duta jul123 Data 3 noiembrie 2013 13:04:09
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<iostream>
#include<fstream>
using namespace std;
int n, g[16000],k;
int check(int V)
{
    int i;
    long long s;
    int nr=0;
   i=0;
   s=0;
   for(i=0;i<n;i++)
        if(s+g[i]>V)
        {
            nr++;
            s=g[i];
        }
        else
            s+=g[i];
    if(nr+1>k)
        return 0;
    return 1;
}
long long transport(int left, int right)
{
    if(left==right)
         return left;
    if(left<right)
    {
        int m=(left+right)/2;
        if(check(m)==0)
            return transport(m+1,right);
        else
            return transport(left,m);
    }
}
int main()
{
    ifstream f("transport.in");
    ofstream gg("transport.out");
    f>>n>>k;
    long long s=0;
    for(int i=0;i<n;i++)
        {
            f>>g[i];
            s+=g[i];
        }
    gg<<transport(0,s);


}