始终一个点(第四个)过不了,求调
查看原帖
始终一个点(第四个)过不了,求调
1353209
xiaomao91楼主2025/8/4 20:26
#include<iostream>
#include<cmath>
#define N 100001
using namespace std;
int a[N];
int main(){
	int r;
	cin>>r;
	int d1,d2;
	cin>>d1>>d2;
	a[d1]=d2;
	int maxk=0;
	while(true){
		int x,y;
		cin>>x>>y;
		if(x==-1&&y==-1){
			break;
		}
		if(x<d1){
			continue;
		}
		a[x]=y;
		maxk=max(maxk,x);
	}
	int u;
	cin>>u;
	bool k=true;
	int o=0,p=0;
	for(int i=1;i<N;i++){
		if(a[i]!=0&&k){
			k=false;
			o=i;
			p=a[i];
		}
		else if(a[i]!=0&&!k){
			int h=a[i]-p;
			int j=i-o;
			for(int z=o+1;z<i;z++){
				a[z]+=h/j;
			}
			o=i;
			p=a[i];
		}
		if(i==maxk){
			break;
		}
	}
	int m=maxk;
	for(int i=m+1;i<=N-1;i++){
		if(a[i-1]-u>0){
			a[i]=a[i-1]-u;
		}
		else{
			break;
		}
	}
	int ans=0x3f;
	long long tmp=0,p1=0;
	for(int i=-111;i<=100;i++){
		for(int j=d1+1;j<N;j++){
			if(a[j]*(j+i-d1)>tmp){
				tmp=a[j]*(j+i-d1);
				p1=j;
			}
		}
		if(p1==r){
			if(abs(ans)>i){
				ans=i;
			}
		}
	}
	cout<<ans;
	return 0;
}
2025/8/4 20:26
加载中...