Cod sursa(job #1378368)

Utilizator MaarcellKurt Godel Maarcell Data 6 martie 2015 11:50:30
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <iostream>
#include <fstream>
#define LL long long int
using namespace std;

LL N,K,a[100010];

bool check(LL x){
    LL i,c=1,l=0;
    for (i=1; i<=N && c<=K; i++){
        if (a[i]+l<=x) l+=a[i];
        else c++,l=min(l,a[i]-x+l);

        if (l==x) c++,l=0;
    }

    return c>K;
}

int main(){
    ifstream fin("grupuri.in");
    ofstream fout("grupuri.out");
    fin >> K >> N;

    int i;
    for (i=1; i<=N; i++) fin >> a[i];

    LL l=1,r=(1LL<<40),mid;
    while (r-l>1){
        mid=(l+r)/2;
        if (check(mid)) l=mid;
        else r=mid-1;
    }
    if (check(l+1)) l++;

    fout <<l;
    return 0;
}