[传智杯 #5 初赛] D-莲子的物理热力学

看了官方题解,看不懂,借鉴于
http://www.yaotu.net/biancheng/132637.html


代码

#include<iostream>
#include<algorithm>
using namespace std;
#define inf 9223372036854775807
#define io ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
typedef long long ll;
typedef pair <ll,ll> pii;
const ll N=100010;
ll n,k,m,MIN=inf;
ll a[N];
int main(){
    io;
    cin>>n>>m;
    for (ll i = 1; i <= n; i++)
    {
        cin>>a[i];
    }
    sort(a+1,a+1+n);
    if(m>=n){
        MIN=0;
    }else if(m==0){
        MIN=a[n]-a[1];
    }else{
        for (ll i = 1; i <= m; i++)
        {
            ll j=m-2*(i-1);
            if(j<0) j=0;
            ll sub=abs(a[n-j]-a[i]);
            MIN=min(sub,MIN);
        }
        for (ll i = n; i > n-m; i--)
        {
            //这个地方坑了我好久
            ll j=m-2*(n-i)+1;
            if(j<=0) j=1;
            ll sub=abs(a[i]-a[j]);
            MIN=min(sub,MIN);
        }
    }
    cout<<MIN;
    return 0;
}
posted @ 2022-12-02 17:25  karson3  阅读(39)  评论(0)    收藏  举报