幼い頃からC++を学びましょう!Xueersi Monkey プログラミングの学習プロセスにおける質問を記録し、あらゆる瞬間を記録します。いかなる侵害も直ちに削除されますので、ご支援のほどよろしくお願いいたします。
概要の投稿を添付します: Little Monkey プログラミング C++ | 概要-CSDN ブログ
[タイトル説明]
車両を整理するには乗り換え駅Cをご利用ください。車両を何台でも停めることができる駅ですが、終端が塞がれているため、 Cに入った車両は逆の順序でCから出なければなりません。各車両では、一度Cに入るとAに戻ることはできず、CからBに移動するとCに戻ることはできません。つまり、キャリッジはAからCへ、またはCからBへのみ移動できます。
【入力】
最初の行には整数 nが含まれています。
2 行目には スペースで区切られた n 個の文字列s 1, s 2,⋯, sn が含まれており、文字列 si には大文字と小文字のみが含まれることが保証されます。
【出力】
n 個のスペースで区切られた整数を含む 1 行が 結果を表します。
【入力サンプル】
5
ab a aa ba aa
【出力サンプル】
2 3 5 4 1
【詳しいコード説明】
#include <bits/stdc++.h>
#include <stack>
using namespace std;
int n;
stack<int> st;
string s[100010], mins[100010];
int main()
{
cin >> n;
for (int i=1; i<=n; i++) cin >> s[i];
mins[n] = s[n];
for (int i=n-1; i>=1; i--) {
mins[i] = min(mins[i+1], s[i]);
}
for (int i=1; i<=n; i++) {
st.push(i);
while (st.size() && s[st.top()]<=mins[i+1]) {
cout << st.top() << " ";
st.pop();
}
}
while (st.size()) {
cout << st.top() << " ";
st.pop();
}
return 0;
}
【運用結果】
5
ab a aa ba aa
2 3 5 4 1