40分求助:(
查看原帖
40分求助:(
1227031
ARTI001楼主2024/4/22 14:09
`#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;

int n,l,m;
int d[50005];
int mid,lef,righ;
int count;

int num(int x)
{
	count=0;
	for(int i=1;i<=n+1;i++)
	{
		int temp=d[i];
		while(temp<x&&i<=n+1)
		{
			count++;i++;
			temp+=d[i];
		}
	}
	return count;
}

int main()
{
	cin>>l>>n>>m;
	int c[50005]={0};
	for(int i=1;i<=n;i++)
	{
		cin>>c[i];
		d[i]=c[i]-c[i-1];
	}
	d[n+1]=l-c[n];
	lef=0;righ=l;mid=l;
	
	while(num(mid)!=m)
	{
		mid=(righ+lef)/2;
		if(num(mid)>m)
		{
			righ=mid;
		}
		if(num(mid)==m)
		{
			break;
		}
		if(num(mid)<m)
		{
			lef=mid;
		}
	}
	cout<<mid;
	return 0;
}
2024/4/22 14:09
加载中...