比赛 收心赛 评测结果 WWWWAATTTT
题目名称 卡牌游戏 最终得分 20
用户昵称 对立猫猫对立 运行时间 10.205 s
代码语言 C++ 内存使用 6.04 MiB
提交时间 2026-02-24 09:47:40
显示代码纯文本
#include <bits/stdc++.h>
//#define int long long
using namespace std;
int n, m, limit;
int absx(int x) {
    if(x < 0) return -x;
    return x;
}
struct Card {
    int a, b;
    bool operator<(const Card t) const {
        return a < t.a;
    }
    bool operator>(const Card t) const {
        return a > t.a;
    }
};
Card card[1000005];
int quemin = 0x3f3f3f3f, quemax = 0xc0c0c0c0;
signed main() {
    freopen("card.in", "r", stdin);
    freopen("card.out", "w", stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> n >> m;
    for(int i = 1; i <= n; i++) {
        cin >> card[i].a;
        if(i > m && i <= n - m) {
            quemin = min(quemin, card[i].a);
            quemax = max(quemax, card[i].a);
        }
    }
    for(int i = 1; i <= n; i++) {
        cin >> card[i].b;
    }
    sort(card + 1, card + 1 + n);
    int ans = 0x3f3f3f3f;
    for(int use = 0; use <= m; use++) {
        for(int x = 0; x <= use; x++) {
            int mini = quemin, maxi = quemax;
            for(int l = 1; l <= m; l++) {
                if(l <= x) {
                    mini = min(mini, card[l].b);
                    maxi = max(maxi, card[l].b);
                }
                else {
                    mini = min(mini, card[l].a);
                    maxi = max(maxi, card[l].a);
                }
            }
            for(int r = x + 1; r <= m; r++) {
                if(r < use) {
                    mini = min(mini, card[n - (r - x - 1)].b);
                    maxi = max(maxi, card[n - (r - x - 1)].b);
                }
                else {
                    mini = min(mini, card[n - (r - x - 1)].a);
                    maxi = max(maxi, card[n - (r - x - 1)].a);
                }
            }
//            cerr << mini << " " << maxi << endl;
            if(mini != 0x3f3f3f3f && maxi != 0xc0c0c0c0) ans = min(ans, maxi - mini);
        }
    }
    cout << ans << endl;
    return 0;
}