Cod sursa(job #1075288)

Utilizator FawkesAndrei Colhon Fawkes Data 8 ianuarie 2014 20:15:22
Problema Transport Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <iostream>
#include <fstream>

using namespace std;
int a[100006];
int main()
{
    ifstream f("transport.in");
    ofstream g("transport.out");
    int n,s=0,k,t,rez;
    f >> n >> k;
    for(int i=1;i<=n;++i)
    {
        f >> a[i];
        s=s+a[i];
    }
    t=s/k;
    int mid,st,dr;
    st=t;
    dr=s;
    while(st<=dr)
    {
        mid =(st+dr)/2;
        int v=1,cmid;
        cmid=mid;
        for(int i=1;i<=n;++i)
        {

            if(a[i]<=mid)
            {
                mid=mid-a[i];
            }
            else
            {
                mid=cmid;
                mid=mid-a[i];
                ++v;
            }
        }
         if(v==k)
            {
                rez=cmid;
                break;
            }
            if(v<k)
            {
                dr=cmid-1;
            }
            if(v>k)
            {
                st=cmid+1;
            }

    }
    int q=1,w=1,cm=rez,cn;

    while(q)
    {
        --cm;
        cn=cm;
        w=1;
        for(int i=1;i<=n;++i)
        {

            if(a[i]<=cm)
            {
                cm=cm-a[i];
            }
            else
            {
                cm=cn;
                cm=cm-a[i];
                ++w;
            }

        }
        cm=cn;
        if(w!=k) --q;
    }
    g << cn+1;
    return 0;
}