求bug在哪
  • 板块学术版
  • 楼主black123er
  • 当前回复5
  • 已保存回复5
  • 发布时间2024/8/30 14:14
  • 上次更新2024/8/30 17:19:55
查看原帖
求bug在哪
1419466
black123er楼主2024/8/30 14:14

题目链接

我的思路是分治(可能不是);

我的题解:

#include<bits/stdc++.h>
using namespace std;
int n,m[500010],k,l[500010];
void quick(int h,int t){
	if(t-h==1){
		return ;
	}
	int p[500010];
	quick(h,(h+t)/2);
	quick((h+t)/2+1,t);
	int h1=h;
	int h2=(h+t)/2+1;
	int tail=h+1;
	while(h1<(h+t)/2 && h2<t){
		p[tail++]=max(l[h1],l[h2]);
		if(l[h1]<l[h2]){
			h2++;
		}
		else{
			h1++;
		}
	}
	if(h2<t){
		for(;h2<=t;h2++){
			p[tail++]=l[h2];
		}
	}
	else{
		for(;h1<=(h+t)/2;h1++){
			p[tail++]=l[h1];
		}
	}
	for(int i=h;i<=t;i++){
		l[i]=p[i];
	}
	return;
}
int main(){
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		cin>>m[i];
		l[i]=m[i];
	}
	for(int i=2;i<=n;i++){
		quick(1,n);
		cout<<l[k]<<endl;
		for(int i=1;i<=n;i++){
			l[i]=m[i];
		}
	}
}

quick是排序 但出错了 求bug在哪

2024/8/30 14:14
加载中...