55分求救!!
查看原帖
55分求救!!
406124
Yzj2010小号楼主2022/1/31 11:09

555......

#include<iostream>
#include<cstdio>
using namespace std;
long long a[1000001];
int main()
{
    long long l,k,minn=-1,maxx=-1,b;
    cin>>l>>k;
    for(int i=1;i<=l;i++){cin>>a[i];if(a[i]>0) b+=a[i];} 
    long long r=b,z=1;
    while (z<=r)
    {
        long long mid=(z+r)/2,s=0,ti=0;
        for (int i=1;i<=l;i++){
            if(0<ti+a[i]) ti+=a[i];
                if(ti>mid-1) {s++;ti=0;}
        }
        if (s>k) z=mid+1;
        if (s==k) {minn=mid;r=minn-1;}
        if (s<k) r=mid-1;
    }
    if (minn==-1) {cout<<"-1";return 0;}
    z=1;r=b;
    while (z<=r)
    {
        long long mid=(z+r)/2,s=0,ti=0;
        for (int i=1;i<=l;i++){
            if(0<ti+a[i]) ti+=a[i];
                if(ti>mid-1) {s++;ti=0;}
        }
        if (s>k) z=mid+1;
        if (s==k) {maxx=mid;z=maxx+1;}
        if (s<k) r=mid-1;
    }
    cout<<minn<<" "<<maxx;
    return 0;
}

记录详情

请求大佬们帮助!! ——一位蒟蒻的呐喊。

2022/1/31 11:09
加载中...