1 solutions

  • 0
    @ 2024-12-11 0:33:48

    C++ :

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    
    #define Maxn 100002
    #define INF 1000000000
    
    using namespace std;
    
    long long n,k,a[Maxn]={0};
    long long s[Maxn]={0},f[Maxn]={0};
    
    void init()
    {
    	ios::sync_with_stdio(false);
    	cin>>n>>k;
    	for(int i=1;i<=n;i++)
    	{
    		cin>>a[i];
    		s[i]=s[i-1]+a[i];
    	}
    	s[n+1]=INF*2+1;
    }
    
    int Dp(int mid)
    {
    	int i=0,j=0;
    	for(int x=1;x<=k;x++)
    	{
    		while(s[j]-s[i]<=mid) j++;
    		j--;
    		if(j>=n) return x;
    		i=j;
    	}
    	return (INF+1);
    }
    
    void work()
    {
    	int l=0,r=INF;
    	while(l<=r)
    	{
    		int mid=(l+r)>>1;
    		if(Dp(mid)<=k) r=mid-1;
    		else l=mid+1;
    	}
    	cout<<l<<endl;
    }
    
    int main()
    {
    	init();
    	work();
    	
    	return 0;
    }
    
    • 1

    Information

    ID
    726
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By