Cod sursa(job #1325720)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 24 ianuarie 2015 11:58:59
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <cstdio>
#include <fstream>
#define nmax 16005
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");


int v[nmax],n,k,sol;


bool verify(int p)
{
    int i;
    int x=0,y=0;

    for (i=1;i<=n;i++)
                if (v[i]>p) return false;

    x=1;
    for (i=1;i<=n;i++) {
            if (v[i]+y<=p) {
                        y+=v[i];
            }       else {
                        y=v[i];
                        x++;
            }
    }

    if (x<=k) return true;
    return false;
}

int main()
{
    int i,j;
    f>>n>>k;
    for (i=1;i<=n;i++)
                f>>v[i];

    int st=1;
    int dr=1<<30;
    int mijl;

    while (st<=dr) {
        mijl=(st+dr)>>1;
        if (verify(mijl)==true) {
                    dr=mijl-1;
                    sol=mijl;
        } else  {
            st=mijl+1;
        }
    }
    g<<sol;

    return 0;
}