92分求助
查看原帖
92分求助
235373
NOIP_Second楼主2020/10/30 13:12
#include<bits/stdc++.h>
#include<algorithm>
#define MAXN 1000001
using namespace std;

long long int peo[MAXN],dra[MAXN],tig[MAXN];

long long int Dyx (long long int n) {
	if(n >= 0) return n;
	return -n;
}
int main() {
	long long int hxd = 0,xiang = 0,dra_ = 0,tig_ = 0,n,m,p1,s1,s2,minn = MAXN;
	cin>>n;
	for(int i = 1; i <= n; i++) {
		cin>>peo[i];
	}
	cin>>m>>p1>>s1>>s2;
	peo[p1] += s1;
	for(int i = 1; i < m; i++) {
		dra[i] = peo[i];
	}
	for(int i = m + 1; i <= n; i++) {
		tig[i] = peo[i];
	}
	for(int i = 1; i < m; i++) {
		dra_ += (m - i) * dra[i];
	}
	for(int i = m + 1; i <= n; i++) {
		tig_ += (i - m) * tig[i];
	}
	if(dra_ == tig_) {
		cout<<m;
		return 0;
	}
	else {
		if(dra_ > tig_) {
			xiang = dra_ - tig_;
			for(int i = m; i <= n; i++) {
				
				if( Dyx(dra_ - tig_ - s2 * (i - m) ) < xiang) {
					xiang = Dyx(dra_ - tig_ - s2 * (i - m));
					hxd = i;
//					cout<<xiang<<endl;
				}
			}
		}
		else if(dra_ < tig_) {
			xiang = tig_ - dra_;
			for(int i = 1; i <= m; i++) {
				 
				 if( Dyx(tig_ - dra_ - s2 * (m - i) < xiang) ){
					xiang = Dyx(tig_ - dra_ - s2 * (m - i)) ;
					hxd = i;
//					cout<<xiang<<endl;
				}
			}
		}		
	}
	cout<<hxd;
	return 0;
}
2020/10/30 13:12
加载中...