8.27NOIP Day12模拟赛

T1

正着跑一边使得每个数比前面的数最多少 \(m\),反着跑一遍使得每个数最多比后面的数少 \(m\),由于只能加不能减,所以这就是最优情况。

#include<bits/stdc++.h>
#define int long long
#define N 200005
using namespace std;
int x[N];
signed main(){
    int T;
    scanf("%lld",&T);
    while(T--){
        int n;
        scanf("%lld",&n);
        for(int i=1;i<=n;i++)scanf("%lld",&x[i]);
        sort(x+1,x+n+1);
        if(n&1){
            int summ=0;
            for(int i=1;i<n;i+=2)summ+=x[i+1]-x[i];
            if(summ<x[n])printf("Yes\n");
            else printf("No\n");
        }
        else{
            int summ=0;
            for(int i=2;i<n;i+=2)summ+=x[i+1]-x[i];
            if(summ<x[n]-x[1])printf("Yes\n");
            else printf("No\n");
        }
    }
    return 0;
}
posted @ 2025-08-29 15:44  Igunareo  阅读(11)  评论(0)    收藏  举报