Template-Monotonic Stack

#include<iostream>
using namespace std;

typedef long long ll;
const int N = 1e6 + 10;

int n;
int st[N], tt;

int main() {
    
    

	cin >> n;

	for (int i = 1; i <= n; i++) {
    
    
		int x; cin >> x;

		//为了保证栈顶元素小于输入的值,只需要写程序时将<取反为>=就行
		while (tt && st[tt] >= x) tt--;
		if (tt) cout << st[tt] << " ";
		else cout << -1 << " ";

		st[++tt] = x;
	}
	return 0;
}

Guess you like

Origin blog.csdn.net/qq_45739057/article/details/109610048