Cod sursa(job #1042464)

Utilizator cioionutFMI Ionut Ciocoiu cioionut Data 27 noiembrie 2013 02:03:34
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<iostream>
#include<fstream>
using namespace std;
int v[16001],k,n;
int corect(int x)
{
    int i=1,j=1,d=x;
    while(j<=n&&x>=v[j])
    {
        d-=v[j];
        if(d<0) d=x,i++;
        j++;
    }
   if(x<v[j]) return k-1;
   else return i;
}
int cautare(int st, int dr)
{
    int m,c;
    while(st!=dr)
    {
        m=(st+dr)/2;
        c=corect(m);
        if(c==k) return m;
            else if(c<k) dr=m;
                    else st=m+1;
    }
    c=corect(m);
    if(c) return st;
}
int main()
{
    ifstream f("transport.in");
    ofstream g("transport.out");
    f>>n>>k;
    int s=0;
    for(int i=1;i<=n;i++) {f>>v[i];s+=v[i];};
    g<<cautare(1,s);
    f.close();g.close();
    return 0;
}