1045 快速排序 (25分)

杀马特。学长 韩版系。学妹 提交于 2020-02-28 10:45:19

在这里插入图片描述

#include<stdio.h>
#include<algorithm>
using namespace std;
int main(){
    int INF=0x7fffffff;
    int n,ans=0;
    scanf("%d",&n);
    int a[n],b[n];
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    int leftmax[n],rightmin[n];
    leftmax[0]=0;
    rightmin[n-1]=INF;
    for(int i=1;i<n;i++){
         leftmax[i]=max(leftmax[i-1],a[i-1]);
    }
    for(int i=n-2;i>=0;i--){
         rightmin[i]=min(rightmin[i+1],a[i+1]);
    }
    for(int i=0;i<n;i++){
        if(a[i]>leftmax[i]&&a[i]<rightmin[i]){
            b[ans]=a[i];
            ans++;
        }
    }
    sort(b,b+ans);
    printf("%d\n",ans);
    for(int i=0;i<ans;i++){
        if(i==0)  printf("%d",b[i]);
        else printf(" %d",b[i]);
    }
    printf("\n");
    return 0;
}

第一次,参考算法笔记完成,25min

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!