[230324][伯俊/BOJ]2493号塔


質問する



にゅうしゅつりょく



に答える


STL stackで問題を解く.
  • スタックが空の場合出力0です.
  • の位置を格納するためのインデックスおよび入力値がプッシュされる.
  • topと入力値を比較し、top<入力値はpop、スタックは空、出力0.
  • top>入力した値は、スタック上部のインデックス値を出力します.
  • コード#コード#

    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
    	int n, m, max = -1;
    	scanf("%d", &n);
    	stack<pair<int, int>> S;
    
    	for (int i = 1; i <= n; ++i)
    	{
    		scanf("%d", &m);
    
    		while (!S.empty())
    		{
    			if (S.top().second < m)
    				S.pop();
    			else if (S.top().second >= m)
    			{
    				printf("%d ", S.top().first);
    				break;
    			}
    		}
    		if (S.empty())
    			printf("%d ", 0);
    
    		S.push({ i, m });
    	}
    }