【PAT甲级】1101 Quick Sort (25 分)

题意:

输入一个正整数N(<=1e5),接着输入一行N个各不相同的正整数。输出可以作为快速排序枢纽点的个数并升序输出这些点的值。

trick:

测试点2格式错误原因:当答案为0时,需要换行两次😓。。。。。这是为何

AAAAAccepted code:

 1 #define HAVE_STRUCT_TIMESPEC
 2 #include<bits/stdc++.h>
 3 using namespace std;
 4 int a[100007];
 5 int b[100007];
 6 int vis[100007];
 7 int main(){
 8     ios::sync_with_stdio(false);
 9     cin.tie(NULL);
10     cout.tie(NULL);
11     int n;
12     cin>>n;
13     for(int i=1;i<=n;++i)
14         cin>>a[i];
15     int cnt=0;
16     int mx=0,mn=2e9;
17     for(int i=1;i<=n;++i){
18         if(a[i]>mx)
19             ++vis[i];
20         mx=max(mx,a[i]);
21     }
22     for(int i=n;i;--i){
23         if(a[i]<mn)
24             ++vis[i];
25         mn=min(mn,a[i]);
26     }
27     for(int i=1;i<=n;++i)
28         if(vis[i]==2)
29             b[++cnt]=a[i];
30     cout<<cnt<<"\n";
31     if(cnt){
32         for(int i=1;i<=cnt;++i){
33             cout<<b[i];
34             if(i<cnt)
35                 cout<<" ";
36         }
37     }
38     if(cnt==0)
39         cout<<"\n";
40     return 0;
41 }

 

posted @ 2019-12-02 17:52  sewage  阅读(240)  评论(0编辑  收藏  举报