萌新求救,只有30分
查看原帖
萌新求救,只有30分
644860
boolex楼主2022/1/30 10:08

第17个点tle了,其他的wa。希望大佬能帮一把

# include<bits/stdc++.h>
using namespace std;

int ans,mid;
int l,k;
int a[100002];

int akwhat(int x)
{
    int Cnt = 0;
    int diff = 0;
    for(int i = 1; i<=l; i++)
    {
        diff += a[i];
        if(diff<0){diff = 0;continue;}
        if(diff>=x){diff = 0;++Cnt;}
    }
    return Cnt;
}

int main()
{
    cin>>l>>k;
    int maxn = 0;
    for(int i = 1; i<=l; ++i){
        cin>>a[i];
        if(a[i]>0)maxn+=a[i];
    }
    
    int left = 0, right = maxn;
    
    while(left<=right)
    {
        ///cout<<left<<" "<<right<<" ";
        mid = (left+right)/2;
        ///cout<<mid<<endl;
        int temp = akwhat(mid);
        //temp太小说明mid太大
        if(temp < k)right = mid-1;
        else if(temp>k)left = mid+1;
        else right = mid-1,ans = mid;
    }
    cout<<ans<<" ";
    left = 0, right = maxn;
    while(left<=right)
    {
       ///cout<<left<<" "<<right<<" ";
        mid = (left+right)/2;
        ///cout<<mid<<endl;
        int temp = akwhat(mid);
        //temp太小说明mid太大
        if(temp < k)right = mid-1;
        else if(temp>k)left = mid+1;
        else left = mid+1,ans = mid;
    }
    cout<<ans;
        
    ///cout<<akwhat();
    return 0;
}
2022/1/30 10:08
加载中...