社区讨论

10TEL qt

P1923【深基9.例4】求第 k 小的数参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mhjav2s8
此快照首次捕获于
2025/11/03 23:33
4 个月前
此快照最后确认于
2025/11/03 23:33
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
#define ll long long 
#define rt return
#define MAXN 5000007
int all[MAXN],l[MAXN],r[MAXN],mid[MAXN],n,k;
bool s[MAXN];
signed solve(){
	for(int i=0;i<n;i++){
		cin>>all[i];
		if(i%2==0) l[i]=all[i];//分成两堆 
		else r[i]=all[i];
	}
	for(int i=0;i<n-1;i++){
		if(r[i]>r[i]+1) swap(r[i],r[i+1]);
		if(l[i]>l[i]+1) swap(l[i],l[i+1]);//排序 
	}
	for(int i=0;i<n;i++){
		if((r[i]>l[i])&&s[i]==false){
			swap(r[i],l[i]);
			mid[i]=r[i];
			mid[i+1]=l[i];//存进mid数组 
			s[i]=true;
			s[i+1]=true;
		}
	}
	printf("%ld",mid[k]);
}
int main(){
	cin>>n>>k;
	solve();
	rt 0;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...