龙虎斗 - 洛谷P5016

题目

CODE

#include <iostream>
#include <cmath>
using namespace std;
#define For(a, b, c) for(int a = b; a <= c; a++)

long long n, c[100010], m, p, s1, s2;
long long drgon, tiger, gap, minn;

int main(){
	ios::sync_with_stdio(0);
	cin >> n;
	For(i, 1, n)
		cin >> c[i];
	cin >> m >> p >> s1 >> s2;
	c[p] += s1;
	For(i, 1, m-1)
		drgon += c[i] * (m-i);
	For(i, m+1, n)
		tiger += c[i] * (i - m);
	gap = abs(drgon - tiger);
	gap /= s2;
	minn = abs(drgon - tiger);
	if(drgon > tiger){
		int I = 0;
		For(i, gap-1, gap+1){
			if(m+i < 1 || m+i > n)	continue;
			int Gap = abs(drgon - tiger - s2 * i);
			I = Gap < minn ? i : I;
			minn = Gap < minn ? Gap : minn;
		}
		cout << m+I << endl;
	}else{
		int I = 0;
		For(i, gap-1, gap+1){
			if(m-i < 1 || m-i > n)	continue;
			int Gap = abs(tiger - drgon - s2 * i);
			I = Gap < minn ? i : I;
			minn = Gap < minn ? Gap : minn;
		}
		cout << m-I << endl;
	}
	return 0;
}

WHRONg

注意要用long long
否则会 WHRONG ANSWER
posted @ 2020-08-11 09:43  LT-Y  阅读(177)  评论(0)    收藏  举报