PAT (Basic Level) Practise (中文)1045. 快速排序(25)
来源:互联网 发布:app停车软件下载 编辑:程序博客网 时间:2024/06/04 19:10
1045. 快速排序(25)
时间限制
200 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CAO, Peng
著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边。 给定划分后的N个互不相同的正整数的排列,请问有多少个元素可能是划分前选取的主元?
例如给定N = 5, 排列是1、3、2、4、5。则:
因此,有3个元素可能是主元。
输入格式:
输入在第1行中给出一个正整数N(<= 105); 第2行是空格分隔的N个不同的正整数,每个数不超过109。
输出格式:
在第1行中输出有可能是主元的元素个数;在第2行中按递增顺序输出这些元素,其间以1个空格分隔,行末不得有多余空格。
输入样例:51 3 2 4 5输出样例:
31 4 5
#include <cstdio>#include <algorithm>using namespace std;const int maxn=1e5+10;const int inf=0x3fffffff;int a[maxn],leftMax[maxn],rightMin[maxn];int ans[maxn],num=0;int main(){ int n; scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d",&a[i]); leftMax[0]=0; for(int i=1;i<n;i++) leftMax[i]=max(leftMax[i-1],a[i-1]); rightMin[n-1]=inf; 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(leftMax[i]<a[i]&&rightMin[i]>a[i]) ans[num++]=a[i]; } printf("%d\n",num); for(int i=0;i<num;i++){ printf("%d",ans[i]); if(i<num-1) printf(" "); } printf("\n"); return 0;}
阅读全文
0 0
- PAT (Basic Level) Practise (中文) 1045. 快速排序(25)
- PAT (Basic Level) Practise (中文)1045. 快速排序(25)
- PAT (Basic Level) Practise (中文)1045. 快速排序(25)
- PAT (Basic Level) Practise (中文)1045快速排序(25)
- PAT (Basic Level) Practise (中文)1045. 快速排序(25) C语言
- PAT (Basic Level) Practise (中文)
- PAT (Basic Level) Practise (中文)
- PAT (Basic Level) Practise (中文)--1001
- PAT (Basic Level) Practise (中文)
- PAT (Basic Level) Practise (中文)1001
- PAT (Basic Level) Practise (中文)1002
- PAT (Basic Level) Practise (中文) 1007
- PAT (Basic Level) Practise (中文)1015. 德才论 (25)
- PAT (Basic Level) Practise (中文)1020. 月饼 (25)
- PAT (Basic Level) Practise (中文)1030. 完美数列(25)
- PAT (Basic Level) Practise (中文)1020. 月饼 (25)
- PAT (Basic Level) Practise (中文)1020. 月饼 (25)
- PAT (Basic Level) Practise (中文)1030. 完美数列(25)
- 【Mysql】Mysql数据库查询“表空间”
- 防止SQL注入
- HDU-2181 哈密顿绕行世界问题(DFS)
- mac版eclipse快捷键的使用
- Android自定义View专题四 View、Window、WindowManager和Activity之间的关系
- PAT (Basic Level) Practise (中文)1045. 快速排序(25)
- QML与C++混合编程
- Ubuntu16.04+Nvidia GTX 1080+CUDA9.0+cuDNN7+Tensorflow1.4+Anaconda安装
- 从零学Java——异常处理机制
- OFFBOARD
- boost::coroutine2(stackful协程库)
- 数据结构-树的实现C++
- Java——SAX解析XML文件
- Android 二维码生成 带logo