1 solutions

  • 0
    @ 2025-12-3 17:27:33

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    int n,m,a[200005];
    long long sum,ans;
    bool check(long long x)
    {
    	long long k=0;
    	int h=0;
    	for(int i=1;i<=n;i++)
    	{
    		if(k+a[i]<=x)
    			k+=a[i]+1;
    		else
    		{
    			h++;
    			k=a[i]+1;	
    		}	
    	} 
    	if(k>0) h++;
    	if(h<=m) return true;
    	else return false;
    }
    int main(){
        cin>>n>>m;
        for(int i=1;i<=n;i++)
        {
        	cin>>a[i];
        	sum+=a[i];
    	}
    	long long l=1,r=sum+1,mid;
    	while(l<r)
    	{
    		mid=(l+r)/2;
    		if(check(mid))
    		{
    			ans=mid;
    			r=mid;
    		}
    		else l=mid+1;
    	}
    	cout<<ans;
        return 0;
    }
    
    • 1

    Information

    ID
    1006
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    10
    Tags
    # Submissions
    8
    Accepted
    2
    Uploaded By