疑似题面问题
查看原帖
疑似题面问题
1042749
chenxianzhe楼主2024/7/4 20:58
#include <bits/stdc++.h>
using namespace std;
int n,a[100020],m,p,ss,s,wz;
int main(){
	cin >>n;
	for(int i=1;i<=n;i++) cin >>a[i];
	cin >>m >>p >>ss >>s;
	long long lq=0,hq=0;
	a[p]+=ss;
	for(int i=1;i<m;i++) lq+=(m-i)*a[i];
	for(int i=m+1;i<=n;i++) hq+=(i-m)*a[i];
//	cout <<lq <<" " <<hq <<endl;
	long long c=abs(lq-hq),zx=INT_MAX;
	for(int i=1;i<m;i++){
		lq+=(m-i)*s;
		c=abs(lq-hq);
		if(zx>c){
			zx=c;
			wz=i;
		//	cout <<zx <<" " <<c <<endl;
		//	cout <<wz <<endl;
		}
		lq-=(m-i)*s;
	}
	
	for(int i=m+1;i<=n;i++){
		hq+=(i-m)*s;
		c=abs(lq-hq);
		if(zx>c){
			zx=c;
			wz=i;
		//	cout <<zx <<" " <<c <<endl;
		//	cout <<wz <<endl;
		}
		hq-=(i-m)*s;
	}
	c=abs(lq-hq);
	if(zx>c){
	//	cout <<zx <<" " <<c <<endl;
		wz=m;
		zx=c;
	} 
	cout <<wz;
	return 0;
}

80代码

只是将输入数据由int改为long long便可AC, 但由题面信息int应该不会炸,经测试得所有输入只有除m外所有变量int均可,只有m用int不可,只有long long能c,但题面显示m小于n,就为小于10^5,也小于int,玄学问题?

2024/7/4 20:58
加载中...