80分求助,#4WA
查看原帖
80分求助,#4WA
319478
zhibuba楼主2020/7/17 13:50
#include <cstdio>

using namespace std;

int N, M, A[100000000];

bool judge(int x)
{
    int sum = 0, count = 0;
    for (int i = 0; i < N; i++)
    {
        if (sum + A[i] <= x)
        {
            sum += A[i];
        }
        else
        {
            count++; 
            sum = A[i];
        }
    }
    return ++count <= M;
}

int main()
{
    scanf("%d%d", &N, &M);
    for (int i = 0; i < N; i++)
        scanf("%d", &A[i]);
    int left = 1, right = 1e9;
    while (left < right)
    {
        int mid = (left + right) / 2;
        if (judge(mid))
            right = mid;
        else
            left = mid + 1;
    }
    printf("%d", left);
    return 0;
}
2020/7/17 13:50
加载中...