没找到bug
查看原帖
没找到bug
514402
SolitudeFate楼主2022/11/27 19:02

我的代码(我找不到bug)

#include <bits/stdc++.h>
using namespace std;

const int N = 1e5 + 10; 

int n, m;
int a[N];
int ans = 0x3f3f3f3f;

int main()
{
	cin >> n >> m;
	for (int i = 1; i <= n; i++) cin >> a[i]; 
	
	sort(a + 1, a + n + 1);
	
	int j = 1, end = min(n, m + 1);
	for (int i = 1; i <= end; i++)
	{
		j = max(i, j);
		while ((i - 1) + (n - j) + min(i - 1, n - j) > m)
			j++;
		ans = min(ans, a[j] - a[i]);
	}
	cout << ans;
}

kkksc03题解代码

#include<bits/stdc++.h>
#define up(l, r, i) for(int i = l, END##i = r;i <= END##i;++ i)
#define dn(r, l, i) for(int i = r, END##i = l;i >= END##i;-- i)
using namespace std;
typedef long long i64;
const int INF = 2147483647;
int qread(){
    int w=1,c,ret;
    while((c = getchar()) >  '9' || c <  '0') w = (c == '-' ? -1 : 1); ret = c - '0';
    while((c = getchar()) >= '0' && c <= '9') ret = ret * 10 + c - '0';
    return ret * w;
}
const int MAXN = 1e5 + 3;
int A[MAXN], ans = INF;
int main(){
    int n = qread(), m = qread();
    up(1, n, i) A[i] = qread();
    sort(A + 1, A + 1 + n);
    int j = 1;
    up(1, min(n, m + 1), i){
        j = max(i, j);
        while((i - 1) + (n - j) + min(i - 1, n - j) > m) ++ j;
        ans = min(ans, A[j] - A[i]);
    }
    printf("%d\n", ans);
    return 0;
}
2022/11/27 19:02
加载中...