最罕见的68分,谁知道我错在哪里了?
查看原帖
最罕见的68分,谁知道我错在哪里了?
741158
封禁用户楼主2022/10/9 13:36
#include<iostream>
#include<stdio.h>
#include<ctype.h>
#include<math.h>
#include<string.h>
#include<algorithm>
#include<iomanip>
#include<stack>
#include<queue>
#include<deque>
#include<vector>
#include<map>
#include<set>
using namespace std;
const int N=1e5+10;
int main(){
	long long n;
	cin>>n;
	int a[N];
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	long long m,p1,s1,s2;
	cin>>m>>p1>>s1>>s2;
	long long dragon=0,tiger=0;
	for(int i=1;i<=m-1;i++){
		dragon+=(m-i)*a[i];
	}
	for(int i=m+1;i<=n;i++){
		tiger+=(i-m)*a[i];
	}
	if(p1>m){
		tiger+=(p1-m)*s1;
	}
	if(p1<m){
		dragon+=(m-p1)*s1;
	}
	long long maxNum=999999999999999999,maxIdx=m;
	for(int i=1;i<=n;i++){
		if(i<m){
			if(abs(dragon+(m-i)*s2-tiger)<maxNum){
				maxNum=abs(dragon+(m-i)*s2-tiger);
				maxIdx=i;
			}
		}
		if(i>m){
			if(abs(tiger+(i-m)*s2-dragon)<maxNum){
				maxNum=abs(tiger+(m-i)*s2-dragon);
				maxIdx=i;
			}
		}
		if(i==m){
			if(abs(tiger-dragon)<maxNum){
				maxNum=abs(tiger-dragon);
				maxIdx=i;
			}
		}
	}
	cout<<maxIdx<<endl;
}
2022/10/9 13:36
加载中...