Cod sursa(job #2778912)

Utilizator daria0123daria ghitescu daria0123 Data 2 octombrie 2021 13:17:07
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <algorithm>
#include <iostream>
#define MAXN 200005

using namespace std;

int n, v[MAXN], k;

int simulate(long long x) {
    int dist = 0, cnt = 0, pos = 0;
    while (pos < n) {
        cnt++;
        dist = 0;
        while (pos < n && dist <= x) {
            pos++;
            dist += v[pos];
        }
        dist = 0;
        while (pos < n && dist <= x) {
            dist += v[pos];
            pos++;
        }
        if (dist > x)
            pos--;
    }
    return cnt;
}

void cb(long long st, long long dr) {
    int last = 0, lastorase;
    while (st <= dr) {
        long long mid = (st + dr) / 2;
        int ans = simulate(mid);
        if (ans <= k) {
            last = mid;
            lastorase = ans;
            dr = mid - 1;
        } else
            st = mid + 1;
    }
    cout << last << ' ' << lastorase;
}

int main() {
    freopen("orase1.in", "r", stdin);
    freopen("orase1.out", "w", stdout);

    cin >> n >> k;
    for (int i = 1; i < n; i++)
        cin >> v[i];
    cb(1, 2000000001);

    return 0;
}