Cod sursa(job #1225609)

Utilizator SerejaSereja Sereja Data 3 septembrie 2014 01:30:13
Problema Grupuri Scor 12
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>

using namespace std;
int k, n,a[100004];
inline bool Check(const int val,int k){
    int i = 0;
    int j = n;
    while(k > 0){
        int x = a[j];
        while(i < j && x < val)
        {
            x += a[i];
            ++i;
        }
        if(x < val)
            return 0;
        --j,--k;
    }
    return 1;
}
int main(){
    ifstream f("grupuri.in");
    ofstream g("grupuri.out");
    f >> k >> n;
    for(int i = 1;i <= n; ++i)
        f >> a[i];
    f.close();
    int Left = a[1];
    int Right = a[n];
    int sol = -1;
    while(Left <= Right){
        int mid = (Left + Right)/2;
        if(Check(mid,k)){
            sol = mid;
            Left = mid + 1;
        }
        else
            Right = mid-1;
    }
    g<<sol<<"\n";
    g.close();
    return 0;
}