白駿2493号:タワー
タワー。
白駿2493号:タワー
アイデア
2つのスタックを作成し、すべてのスタックを1番のスタックにプッシュします.1番スタックのtopと2番スタックのtopを比較します.スタック2番のtopがより大きい場合、またはスタック2番が空の場合、1番スタックから2番スタックにポップアップします.1番スタックのtopがより大きい場合は、2番スタックのpopで、そのインデックスに1番スタックのsizeを記録します.
コード#コード#
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
stack<pair<int, int>> S1, S2;
int ans[n] = {};
for (int i = 0; i < n; i++) {
int x;
cin >> x;
pair<int, int> p = {x, i};
S1.push(p);
}
while (S1.size()) {
while (S2.size() && S1.top().first > S2.top().first) {
ans[S2.top().second] = S1.size();
S2.pop();
}
S2.push(S1.top());
S1.pop();
}
for (int i : ans) {
cout << i << ' ';
}
return 0;
}
おしゃべり
C++に変えた理由:かっこいい
STLの使い方について
Reference
この問題について(白駿2493号:タワー), 我々は、より多くの情報をここで見つけました
https://velog.io/@ks1ksi/백준-2493번-탑
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
stack<pair<int, int>> S1, S2;
int ans[n] = {};
for (int i = 0; i < n; i++) {
int x;
cin >> x;
pair<int, int> p = {x, i};
S1.push(p);
}
while (S1.size()) {
while (S2.size() && S1.top().first > S2.top().first) {
ans[S2.top().second] = S1.size();
S2.pop();
}
S2.push(S1.top());
S1.pop();
}
for (int i : ans) {
cout << i << ' ';
}
return 0;
}
Reference
この問題について(白駿2493号:タワー), 我々は、より多くの情報をここで見つけました https://velog.io/@ks1ksi/백준-2493번-탑テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol