您的位置:首页 > 其它

PAT(Basic Level)_1045_快速排序

2017-07-26 18:05 302 查看
#include<stdio.h>
#include<limits.h>
#include<stdlib.h>

int cmp(const void *a,const void *b){
return *((int*)a)-*((int*)b);
}

int main(){
int nums[100000],n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",nums+i);
}

int flag[100000]={};
int lmax=0;
for(int i=0;i<n;i++){
if(nums[i]>=lmax){
lmax=nums[i];
}else{
flag[i]|=1;
}
}
int rmin=INT_MAX;
for(int i=n-1;i>=0;i--){
if(nums[i]<=rmin){
rmin=nums[i];
}else{
flag[i]|=1;
}
}

int cnt=0,sel[100000];
for(int i=0;i<n;i++){
if(!flag[i]){
sel[cnt++]=nums[i];
}
}

qsort(sel,cnt,sizeof(int),cmp);
printf("%d\n",cnt);
for(int i=0;i<cnt;i++){
if(i) putchar(' ');
printf("%d",sel[i]);
}
putchar('\n');

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  pat acm 1045