我开了long long的呀,为什么只得了80分呀,其他点TLE了
查看原帖
我开了long long的呀,为什么只得了80分呀,其他点TLE了
490978
小超手123楼主2021/8/12 21:02
#include <bits/stdc++.h>
using namespace std;
long long abs(long long a,long long b){
	if(a>=b)return a-b;
	else return b-a;
}
int main() {
    long long n, m;
    long long s1, p1, s2, p2;
    long long a[106];

    cin >> n;

    for (int i = 1; i <= n; i++) cin >> a[i];

    cin >> m >> p1 >> s1 >> s2;

    long long L = 0, H = 0;

    for (int i = 1; i <= m - 1; i++) {
        L += abs(i, m) * a[i];
    }
    for (int i = m + 1; i <= n; i++) {
        H += abs(i, m) * a[i];
    }
    
    if(p1 < m){ //s1在龙的领地 
        L+=abs(p1,m)*s1;	
	}
	if(p1>m){ //s1在虎的领地 
		H+=abs(p1,m)*s1;
	}
		
    long long min = 100000;
    
    for (int i = 1; i <= n; i++) {
        int p = abs(i, m) * s2; //p为增加势力值 
        if(i < m){ //s2在龙的领地 
        	if(abs(L+p,H)<min){
        		min=abs(L+p,H);
        		p2=i;
			}
		}
		else if(i>m){ //s2在虎的领地 
			if(abs(L,H+p)<min){
        		min=abs(L,H+p);
        		p2=i;
			}
		}
		else { //s2在m号军营 
			if(abs(L,H)<min){
				min=abs(L,H);
				p2=i;
			}
		}
        
    }
    cout << p2;
    return 0;
}
2021/8/12 21:02
加载中...