1101. Quick Sort (25)

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int num[100010], low[100010], high[100010];

int main()
{
	int n;
	scanf("%d", &n);

	int i;
	for(i = 1; i <= n; i++)
	{
		scanf("%d", &num[i]);
	}

	low[1] = num[1];
	for(i = 2; i <= n; i++)
	{
		low[i] = num[i];
		if(low[i - 1] > low[i])
		{
			low[i] = low[i - 1];
		}
	}

	high[n] = num[n];
	for(i = n - 1; i >= 1; i--)
	{
		high[i] = num[i];
		if(high[i + 1] < high[i])
		{
			high[i] = high[i + 1];
		}
	}

	vector<int> v;
	for(i = 1; i <= n; i++)
	{
		if(num[i] >= low[i] && num[i] <= high[i])
		{
			v.push_back(num[i]);
		}
	}

	int size = v.size();
	printf("%d\n", size);

	if(size > 0)
	{
		sort(v.begin(), v.end());

		for(i = 0; i < size; i++)
		{
			if(i > 0)
			{
				printf(" ");
			}

			printf("%d", v[i]);
		}
	}

	printf("\n");

	system("pause");
	return 0;
}

 

posted on 2025-11-23 17:25  王景迁  阅读(0)  评论(0)    收藏  举报

导航