카테고리 없음

17298번 오큰수 - C++

개발하는 민우 2022. 7. 21. 21:36

[문제]
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 <bits/stdc++.h>
using namespace std;

int arr[1000005] = {-1};

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    
    int N;
    cin >> N;
    stack<pair<int, int>> S;
    memset(arr, -1, sizeof(arr));
    for(int i=0; i<N; i++){
        int a;
        cin >> a;
        while(!S.empty() && S.top().first < a){
            arr[S.top().second] = a;
            S.pop();
        }
        S.push({a, i});
    }
    for(int i=0; i<N; i++)
      cout << arr[i] << " ";
}