72模拟求调!#5~10 #13WA!蒟蒻求助!
查看原帖
72模拟求调!#5~10 #13WA!蒟蒻求助!
1035893
2789617221guo楼主2024/10/10 19:41

最好能讲解一下谢谢,AC了关注。

#include<cmath>
#include<stdio.h>
#include<cstring>
#include<limits.h>
#include<iostream>
#include<algorithm>
using namespace std;
long long n,m,s1,s2,p1;
long long mnn,mnv=2e+19,loong,tiger,c[100005]; 
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%lld",&c[i]);
	}
	scanf("%lld%lld%lld%lld",&m,&p1,&s1,&s2);
	c[p1]+=s1;
	for(int i=1;i<m;i++) loong+=c[i]*(m-i);
	for(int i=m+1;i<=n;i++) tiger+=c[i]*(i-m);
//	printf("tiger:%d loong:%d\n",tiger,loong);
	if(loong==tiger){
		printf("%lld\n",m);
	} else {
		for(long long i=1;i<=n;i++){
			if(mnv==0) break;
			if(i<m){
				if(abs(loong+s2*(m-i)-tiger)<mnv){
					mnv=abs(loong+s2*(m-i)-tiger);
					mnn=i;
				}
//				printf("%dcur:%d\n",i,abs(loong+s2*(m-i)-tiger));
			} else if(i>m) {
				if(abs(tiger+s2*(i-m)-loong)<mnv){
					mnv=abs(tiger+s2*(i-m)-loong);
					mnn=i;
				}
//				printf("%dcur:%d\n",i,abs(tiger+s2*(i-m)-loong));
			} else {
				continue;
			} 
		}
		printf("%lld\n",mnn);
	}
	return 0;
}
2024/10/10 19:41
加载中...