菜鸡求助
查看原帖
菜鸡求助
219814
xiezihan楼主2020/8/7 13:32
#include<bits/stdc++.h>
using namespace std;
long long n,d,k,l,r;
long long a[500000][2],dp[500000];
bool cheack(int x)
{
	l=d-x;
	r=d+x;
	if(l<1)
	{
		l=1;
	}
	memset(dp,-127,sizeof(dp));
	dp[0]=0;
	for(int i=1;i<=n;i++)
	{
		for(int j=i-1;j>=0;j--)
		{
			if(a[i][0]-a[j][0]<l)continue;
			if(a[i][0]-a[j][0]>r)break;
			dp[i]=max(dp[i],dp[j]+a[i][1]);
			if(dp[i]>=k)
			{
				return true;
			} 
                
		}
	}
	return false;
}
int main()
{
	scanf("%lld%lld%lld",&n,&d,&k);
	for(int i=1;i<=n;i++)
	{
		scanf("%lld%lld",&a[i][0],&a[i][1]);
	}
	long left,right,mid;
	left=0;
	right=1005;	
	mid=(left+right)/2;
	long long s=-1;
	while(l<=r)
	{
		if(cheack(mid))
		{
			s=mid;
			right=mid-1;
		}
		else
		{
			left=mid+1;
		}
		mid=(left+right)/2;
	}
	cout<<s;
    return 0;
}

什么东西都输出不出来

2020/8/7 13:32
加载中...