各位大佬帮看看,为啥后两个显示的是re
查看原帖
各位大佬帮看看,为啥后两个显示的是re
802493
sixgoder楼主2023/8/17 14:49
#include<iostream>
using namespace std;
int n;//n个数 
long long data[5000031];
long long  tmp[5000031];
int nums = 1;
// 快读 
long long read(){
	long long x = 0, f = 1;
	char c = getchar();
	while(c < '0' || c > '9'){
		if(c == '-'){
			f = -1;
		}
		c = getchar();
	}
	while(c >= '0' && c <= '9'){
		x = x*10+c-'0';
		c = getchar();
	}
	return x*f;
}
void hebing(int start,int mid,int end ){
	int POS1 = start;
	int POS2 = mid+1;
	int old = nums;

	while(POS1<=mid&&POS2<=end){
		if(data[POS1]>=data[POS2]){
			tmp[nums++] = data[POS2++];
		}else{
			tmp[nums++] = data[POS1++];
		}
	}
	while(POS2<=end){
		tmp[nums++] = data[POS2++];
	}
	while(POS1<=mid){
		tmp[nums++] = data[POS1++];
	}
	copy(tmp+old,tmp+nums,data+start);
	return ;
} 
void huafen(int start,int end){
	if(start<end&&start!=0&&end!=0){
		long long mid = (start+end)/2;// 中间值的下标
		huafen(start,mid);
		huafen(mid+1,end);
		hebing(start,mid,end); // 合并操作 
	}
	return;
}
int main()
{
	long long k;
	cin>>n>>k;
	for(int  i=1;i<=n;i++){
		data[i] = read();
	}
    huafen(1,n);
    cout<<data[k+1];
    
	return 0;
}

2023/8/17 14:49
加载中...