求助!可以用归并做吗?
查看原帖
求助!可以用归并做吗?
757954
cabbage_flower楼主2023/12/1 13:08
#include<iostream>
using namespace std;

int n, k;
int a[5000005], c[5000005];

inline void merge(int l, int r){
	if(l==r)
		return;
	int mid=(l+r)/2;
	merge(l, mid);
	merge(mid+1, r);
	int i=l, j=mid+1, k=l;
	while(i<=mid && j<=r){
		if(a[i]<a[j])
			c[k++]=a[i++];
		else
			c[k++]=a[j++];
	}
	while(i<=mid)
		c[k++]=a[i++];
	while(j<=r)
		c[k++]=a[j++];
	for(int i=l; i<=r; i++)
		a[i]=c[i]; 
}
int main(){
	scanf("%d%d", &n, &k);
	for(int i=1; i<=n; i++)
		scanf("%d", &a[i]);
	merge(1, n);
	printf("%d", a[k+1]);
	return 0;
}
2023/12/1 13:08
加载中...