PAT A1101 Quick Sort

题目难度:一颗半星
题目大意:给定一个序列,问有多少元素是满足快排的主元的?输出个数和每个数值,要求按照升序输出。
题目坑点:题目是没难度,就是测试点2太坑了,我想了二十分钟,没想过哪里有问题,然后百度一通发现,当如果主元的个数为零的时候,需要输出一个回车。。。。我晕。。。。它开心就好
题目代码:

#include<iostream>
#include<stdlib.h>
#include<queue>
#include<stack>
#include<algorithm>
#include<map>
#include<cstring>
using namespace std;
int l[100010],r[100010],ans[100010];
int main(){
	memset(l,0,sizeof(int)*100010);
	memset(r,0,sizeof(int)*100010);
	int N,min,max;
	cin>>N;
	int num[N];
	for(int i=0;i<N;i++){
		cin>>num[i];
	}
	l[0]=1;
	max=num[0];
	for(int i=1;i<N;i++){
		if(max<=num[i]){
			l[i]=1;
			max=num[i];
		}
	}
	r[N-1]=1;
	min=num[N-1];
	int count=0;
	for(int i=N-2;i>=0;i--){
		if(min>=num[i]){
			r[i]=1;
			min=num[i];
		}
	}
	for(int i=0;i<N;i++){
		if(l[i]==1&&r[i]==1)
			ans[count++]=num[i];
	}
	cout<<count<<endl;
	for(int i=0;i<count;i++){
		cout<<ans[i];
		if(i!=count-1)
			cout<<" ";
	}
	if(count==0)
		cout<<endl;
	return 0;
}

发布了18 篇原创文章 · 获赞 0 · 访问量 177

猜你喜欢

转载自blog.csdn.net/weixin_42302528/article/details/104479076