๋ฐ์ํ
https://www.acmicpc.net/problem/6198
๋ฌธ์
๋์์๋ N๊ฐ์ ๋น๋ฉ์ด ์๋ค.
๋น๋ฉ ๊ด๋ฆฌ์ธ๋ค์ ๋งค์ฐ ์ฑ์ค ํ๊ธฐ ๋๋ฌธ์, ๋ค๋ฅธ ๋น๋ฉ์ ์ฅ์ ์ ์์ ๋ฒค์น๋งํน ํ๊ณ ์ถ์ดํ๋ค.
i๋ฒ์งธ ๋น๋ฉ์ ํค๊ฐ hi์ด๊ณ , ๋ชจ๋ ๋น๋ฉ์ ์ผ๋ ฌ๋ก ์ ์๊ณ ์ค๋ฅธ์ชฝ์ผ๋ก๋ง ๋ณผ ์ ์๋ค.
i๋ฒ์งธ ๋น๋ฉ ๊ด๋ฆฌ์ธ์ด ๋ณผ ์ ์๋ ๋ค๋ฅธ ๋น๋ฉ์ ์ฅ์ ์ ์์ i+1, i+2, .... , N์ด๋ค.
๊ทธ๋ฐ๋ฐ ์์ ์ด ์์นํ ๋น๋ฉ๋ณด๋ค ๋๊ฑฐ๋ ๊ฐ์ ๋น๋ฉ์ด ์์ผ๋ฉด ๊ทธ ๋ค์์ ์๋ ๋ชจ๋ ๋น๋ฉ์ ์ฅ์์ ๋ณด์ง ๋ชปํ๋ค.
์) N=6, H = {10, 3, 7, 4, 12, 2}์ธ ๊ฒฝ์ฐ
=
= =
= - =
= = = -> ๊ด๋ฆฌ์ธ์ด ๋ณด๋ ๋ฐฉํฅ
= - = = =
= = = = = =
10 3 7 4 12 2 -> ๋น๋ฉ์ ๋์ด
[1][2][3][4][5][6] -> ๋น๋ฉ์ ๋ฒํธ
- 1๋ฒ ๊ด๋ฆฌ์ธ์ 2, 3, 4๋ฒ ๋น๋ฉ์ ์ฅ์์ ํ์ธํ ์ ์๋ค.
- 2๋ฒ ๊ด๋ฆฌ์ธ์ ๋ค๋ฅธ ๋น๋ฉ์ ์ฅ์์ ํ์ธํ ์ ์๋ค.
- 3๋ฒ ๊ด๋ฆฌ์ธ์ 4๋ฒ ๋น๋ฉ์ ์ฅ์์ ํ์ธํ ์ ์๋ค.
- 4๋ฒ ๊ด๋ฆฌ์ธ์ ๋ค๋ฅธ ๋น๋ฉ์ ์ฅ์์ ํ์ธํ ์ ์๋ค.
- 5๋ฒ ๊ด๋ฆฌ์ธ์ 6๋ฒ ๋น๋ฉ์ ์ฅ์์ ํ์ธํ ์ ์๋ค.
- 6๋ฒ ๊ด๋ฆฌ์ธ์ ๋ง์ง๋ง์ด๋ฏ๋ก ๋ค๋ฅธ ๋น๋ฉ์ ์ฅ์์ ํ์ธํ ์ ์๋ค.
๋ฐ๋ผ์, ๊ด๋ฆฌ์ธ๋ค์ด ์ฅ์์ ์์ ํ์ธํ ์ ์๋ ์ด ์๋ 3 + 0 + 1 + 0 + 1 + 0 = 5์ด๋ค.
์ ๋ ฅ
- ์ฒซ ๋ฒ์งธ ์ค์ ๋น๋ฉ์ ๊ฐ์ N์ด ์ ๋ ฅ๋๋ค.(1 ≤ N ≤ 80,000)
- ๋ ๋ฒ์งธ ์ค ๋ถํฐ N+1๋ฒ์งธ ์ค๊น์ง ๊ฐ ๋น๋ฉ์ ๋์ด๊ฐ hi ์ ๋ ฅ๋๋ค. (1 ≤ hi ≤ 1,000,000,000)
์ถ๋ ฅ
- ๊ฐ ๊ด๋ฆฌ์ธ๋ค์ด ๋ฒค์น๋งํน์ด ๊ฐ๋ฅํ ๋น๋ฉ์ ์์ ํฉ์ ์ถ๋ ฅํ๋ค.
ํ์ด
// Authored by : seondal
// Co-authored by : -
//#include <bits/stdc++.h>
#include <iostream>
#include <stack>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
long long ans = 0;
stack <int> s;
s.push(1000000001);
int n;
cin >> n;
while(n--){
int b;
cin >> b;
while(s.top() <= b)
s.pop();
ans += s.size() - 1; //๋ฏธ๋ฆฌ ๋ฃ์ด๋ 0 ๋นผ๊ธฐ
s.push(b);
}
cout << ans;
return 0;
}
/*
*/
๋ฐ์ํ
'๐ Baaaaaarking > 0x05๊ฐ - ์คํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ G1][C++] ๋ฐฑ์ค 3015๋ฒ: ์ค์์์ค ์ฌ๊ฒฐํฉ (0) | 2022.02.16 |
---|---|
[BOJ G4][C++] ๋ฐฑ์ค 17298๋ฒ: ์คํฐ์ (1) | 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 |