View Code of Problem 3867

#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <string>
#include <vector>
#include <queue>
#include <deque>
#include <stack>
#include <set>
#include <unordered_set>
#include <map>
#include <math.h>
#include <unordered_map>
#include <iterator>
#include <utility>
#include <functional>
using namespace std;
typedef long long ll;
#define MAX 1000010
int blocks[MAX], flgl[MAX], flgr[MAX];
int main()
{
	int t, count = 0;
	int max, min;
	memset(flgl, 0, sizeof(flgl));
	memset(flgr, 0, sizeof(flgr));
	cin >> t;
	max = 0;
	min = 1e9 + 1;
	for (int i = 0; i < t; i++)
	{
		cin >> blocks[i];
	}
	for (int i = 0; i < t; i++)
	{
		if (i&&blocks[i - 1] > max)
		{
			max = blocks[i - 1];
		}
		if (blocks[i] > max)
		{
			flgl[i] = 1;
		}
	}
	for (int i = t - 1; i >= 0; i--)
	{
		if (t - i - 1 && blocks[i + 1] < min)
		{
			min = blocks[i + 1];
		}
		if (blocks[i] < min)
		{
			flgr[i] = 1;
		}
	}
	for (int i = 0; i < t; i++)
	{
		if (flgl[i] && flgr[i])
		{
			++count;
		}
	}
	cout << (t - count) << endl;
	return 0;
}

Double click to view unformatted code.


Back to problem 3867