Codeforces 595C

595C - Warrior and Archer

思路:设最后答案的区间为[l,r],那么r-l等于n/2,因为在(l,r)中的点都是其中一个人挖掉的,[0,l)和(r,n]中的点是另一个人挖掉的,两者相等。

代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define mp make_pair 
#define pi acos(-1.0)
#define pii pair<int,int>
#define mem(a,b) memset(a,b,sizeof(a))

const int INF=0x7f7f7f7f;
const int N=2e5+5;

int a[N];

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    cin>>a[i];
    
    sort(a,a+n);
    int ans=INF;
    for(int i=0;i<n;i++)
    {
        if(i+n/2>=n)break;
        ans=min(ans,a[i+n/2]-a[i]);
    }
    
    cout<<ans<<endl;
    return 0;
} 
原文地址:https://www.cnblogs.com/widsom/p/7416524.html