讨论/《春招冲刺班 - 7 天刷题挑战》 - 发下午茶/
《春招冲刺班 - 7 天刷题挑战》 - 发下午茶
#include <bits/stdc++.h>
using namespace std;

const int MAXN = 1010;
int TT[MAXN];
int T[MAXN];
int K, N;

bool check(int k, int mid){
     memcpy(T, TT, sizeof T);
     int i = N - 1;
     while(k){
         int tmp = mid - (i + 1);
         if(tmp < 0) {
             return false;
         }
         while(tmp >= 0){
             if(tmp >= T[i]){
                 tmp -= T[i];
                 --i;
                 if(i < 0) return true;
             }else{
                 T[i] -= tmp;
                 k--;
                 break;
             }
         }
     }
     return false;
 }

int main(){
    cin>>K>>N;
    for(int i=0; i < N; ++i) cin>>TT[i];
    int len = 1e7 + 50;
    int left = 0, right = len;
    while(left < right){
        int mid = (left + right) / 2;
        if(check(K, mid)){
            right = mid;
        }else{
            left = mid + 1;
        }
    }
    cout<<left;
    return 0;
}
展开全部 9 讨论