๐Ÿ• Baaaaaarking/0x05๊ฐ• - ์Šคํƒ

[BOJ G5][C++] ๋ฐฑ์ค€ 6198๋ฒˆ: ์˜ฅ์ƒ ์ •์› ๊พธ๋ฏธ๊ธฐ

์„ ๋‹ฌ 2022. 2. 13. 01:35
๋ฐ˜์‘ํ˜•

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

 

6198๋ฒˆ: ์˜ฅ์ƒ ์ •์› ๊พธ๋ฏธ๊ธฐ

๋ฌธ์ œ ๋„์‹œ์—๋Š” N๊ฐœ์˜ ๋นŒ๋”ฉ์ด ์žˆ๋‹ค. ๋นŒ๋”ฉ ๊ด€๋ฆฌ์ธ๋“ค์€ ๋งค์šฐ ์„ฑ์‹ค ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋‹ค๋ฅธ ๋นŒ๋”ฉ์˜ ์˜ฅ์ƒ ์ •์›์„ ๋ฒค์น˜๋งˆํ‚น ํ•˜๊ณ  ์‹ถ์–ดํ•œ๋‹ค. i๋ฒˆ์งธ ๋นŒ๋”ฉ์˜ ํ‚ค๊ฐ€ hi์ด๊ณ , ๋ชจ๋“  ๋นŒ๋”ฉ์€ ์ผ๋ ฌ๋กœ ์„œ ์žˆ๊ณ  ์˜ค๋ฅธ์ชฝ์œผ

www.acmicpc.net

 

๋ฌธ์ œ

๋„์‹œ์—๋Š” 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;
}

/*
 */
๋ฐ˜์‘ํ˜•