반응형

https://www.acmicpc.net/problem/17298

 

17298번: 오큰수

첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다.

www.acmicpc.net

 

스택의 탑이 지금 입력받은 수보다 작다면, 스택의 탑에 입력된 수의 오큰수는 지금 입력 받은 수입니다.

#include <iostream>
#include <stack>
#include <cstring>
using namespace std;

int n, nge[1000000], a;
stack<pair<int, int>> stk;

int main() {
	memset(nge, -1, sizeof(nge));
	scanf("%d", &n);
	for (int i = 0; i < n; i++) {
		scanf("%d", &a);
		while (!stk.empty() && a > stk.top().first) {
			nge[stk.top().second] = a;
			stk.pop();
		}
		stk.push({ a, i });
	}
	for (int i = 0; i < n; i++) printf("%d ", nge[i]);
}
반응형

'Algorithm' 카테고리의 다른 글

백준 11779 : 최소비용 구하기 2  (0) 2021.11.15
백준 2075 : N번째 큰 수  (0) 2021.11.15
백준 1918 : 후위 표기식  (0) 2021.11.15
백준 12899 : 데이터 구조  (0) 2021.11.15
백준 11505 : 구간 곱 구하기  (0) 2021.11.15

+ Recent posts