题目
思路
找主元可以先找到与排好序的位置一样的元素,并且比左边所有的元素值都大,因此要对元素排序,排好序之后找与原序列位置一样的元素,并且判断与max的关系。
代码
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int v[100010];
int main()
{
int n;
cin >> n;
vector<int>a(n),b(n);
int max = 0;
for (int i = 0;i < n;i++)
{
cin >> a[i];
b[i] = a[i];
}
sort(a.begin(), a.end());
int count = 0;
for (int i = 0;i < n;i++)
{
if (a[i] == b[i] && b[i]>max)
{
count++;
v[count] = b[i];
}
if (b[i] > max)
max = b[i];
}
cout << count << endl;
for (int i = 1;i <= count;i++)
{
if (i != 1)
cout << " ";
cout << v[i];
}
cout << endl;
return 0;
}
5805

被折叠的 条评论
为什么被折叠?



