比赛 收心赛 评测结果 WWWWWWTTTT
题目名称 卡牌游戏 最终得分 0
用户昵称 彭欣越 运行时间 8.695 s
代码语言 C++ 内存使用 10.89 MiB
提交时间 2026-02-24 12:13:04
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1000010;
int n,m,a[N],b[N],L,R;
int s1[N],s2[N],s3[N],s4[N];
int mx,mn=1e9,ans=1e9;
int main () {
    freopen("card.in","r",stdin);
    freopen("card.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    cin >> n >> m;
    for (int i=1;i<=n;i++) cin >> a[i];
    for (int i=1;i<=n;i++) {
        cin >> b[i];
        s1[i]=max(s1[i-1],b[i]);
        if (i==1) s3[i]=b[i];
        else s3[i]=min(s3[i-1],b[i]);
    }
    s2[n+1]=1e9;
    for (int i=n;i>=1;i--) {
        s2[i]=min(s2[i+1],b[i]);
        if (i==n) s4[i]=b[i];
        else s4[i]=max(s4[i+1],b[i]);
    }
    mx=a[n],mn=a[1];
    for (int i=1;i<=n;i++) {
        if (a[i]>=b[i]) {
            L=i-1;
            break;
        }
    }
    for (int i=n;i>=1;i--) {
        if (a[i]<=b[i]) {
            R=i+1;
            break;
        }
    }
    for (int i=1;i<=m;i++) {
        for (int j=0;j<=min(i,L);j++) {
            if (i-j>R) continue;
            //cout << max(a[n-i+j],s1[j]) <<' '<< min(a[i+1],s2[n-i+j+1]) <<' '<< i <<' '<< j <<endl;
            ans=min(ans,max(s4[n-i+j+1],max(a[n-i+j],s1[j]))-min(min(a[i+1],s2[n-i+j+1]),s3[j]));
        }
    }
    cout << ans <<endl;
    return 0;
}