https://www.acmicpc.net/problem/17298
๋ฌธ์
ํฌ๊ธฐ๊ฐ N์ธ ์์ด A = A1, A2, ..., AN์ด ์๋ค. ์์ด์ ๊ฐ ์์ Ai์ ๋ํด์ ์คํฐ์ NGE(i)๋ฅผ ๊ตฌํ๋ ค๊ณ ํ๋ค. Ai์ ์คํฐ์๋ ์ค๋ฅธ์ชฝ์ ์์ผ๋ฉด์ Ai๋ณด๋ค ํฐ ์ ์ค์์ ๊ฐ์ฅ ์ผ์ชฝ์ ์๋ ์๋ฅผ ์๋ฏธํ๋ค. ๊ทธ๋ฌํ ์๊ฐ ์๋ ๊ฒฝ์ฐ์ ์คํฐ์๋ -1์ด๋ค.
์๋ฅผ ๋ค์ด, A = [3, 5, 2, 7]์ธ ๊ฒฝ์ฐ NGE(1) = 5, NGE(2) = 7, NGE(3) = 7, NGE(4) = -1์ด๋ค. A = [9, 5, 4, 8]์ธ ๊ฒฝ์ฐ์๋ NGE(1) = -1, NGE(2) = 8, NGE(3) = 8, NGE(4) = -1์ด๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์์ด A์ ํฌ๊ธฐ N (1 ≤ N ≤ 1,000,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์ ์์ด A์ ์์ A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ด N๊ฐ์ ์ NGE(1), NGE(2), ..., NGE(N)์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํด ์ถ๋ ฅํ๋ค.
ํ์ด
์๋ ์ข ๋ค๋ฅธ๊ฒ ์ ๋ ฅ์ ๋ฏธ๋ฆฌ ๋ฐ๊ณ ์ ๋ ฅ๊ฐ๋ค์ >๋ค์์๋ถํฐ< ๊บผ๋ด์ผ ํ๋ค
๊ทธ๋ฆฌ๊ณ ๊บผ๋ธ๊ฐ์ ์คํ์ ์ง์ด๋ฃ์ผ๋ฉด ์์ฐ์ค๋ฝ๊ฒ ์คํ์ ์๋ ์๋ค์ ์์ ์ >์ค๋ฅธ์ชฝ ์<๊ฐ ๋จ
์ด์ ์คํ์ ์๋ ๊ฐ์ด
์์ ๋ณด๋ค ์๋ค -> ์คํฐ์ ์กฐ๊ฑด์ ์๋ง์ผ๋ฏ๋ก ๊ทธ๋ฅ pop
์์ ๋ณด๋ค ํฌ๋ค -> ์คํฐ์ ์กฐ๊ฑด์ ๋ง์ผ๋ฏ๋ก ์ถ๋ ฅ๊ฐ๋ฅ
์ด๋, ์ถ๋ ฅ์ ์ผ์ชฝ๋ถํฐ ๊ฐ์ผํ๋ฏ๋ก ๋ต๋ค์ ๋ฒกํฐ์ ์ ์ฅํ๊ณ
์ถ๋ ฅํ ๋ ํด๋น ๋ต๋ฒกํฐ๋ฅผ ์ญ์ผ๋ก ์ถ๋ ฅํ๋ค
// Authored by : seondal
// Co-authored by : -
//#include <bits/stdc++.h>
#include <iostream>
#include <stack>
#include <vector>
using namespace std;
stack <int> s;
vector <int> input;
vector <int> ans;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
// ์
๋ ฅ
int n;
cin >> n;
for(int i=0; i<n; i++){
int tmp;
cin >> tmp;
input.push_back(tmp);
}
// ๊ณ์ฐ
for(int i=n-1; i>=0; i--){
while(!s.empty() && s.top() <= input[i]) {
s.pop();
}
if(s.empty()) {
ans.push_back(-1);
s.push(input[i]);
continue;
}
ans.push_back(s.top());
s.push(input[i]);
}
// ์ถ๋ ฅ
for(int i=n-1; i>=0; i--){
cout << ans[i] << " ";
}
return 0;
}
/*
*/
'๐ Baaaaaarking > 0x05๊ฐ - ์คํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ G1][C++] ๋ฐฑ์ค 3015๋ฒ: ์ค์์์ค ์ฌ๊ฒฐํฉ (0) | 2022.02.16 |
---|---|
[BOJ G5][C++] ๋ฐฑ์ค 6198๋ฒ: ์ฅ์ ์ ์ ๊พธ๋ฏธ๊ธฐ (0) | 2022.02.13 |
[BOJ G5][C++] ๋ฐฑ์ค 2493๋ฒ: ํ (0) | 2022.02.12 |
[BOJ][C++] 1874๋ฒ : ์คํ ์์ด (0) | 2022.01.08 |
[BOJ][C++] ๋ฐฑ์ค 10773๋ฒ : ์ ๋ก (0) | 2022.01.06 |