5397番キーロック
質問リンク
コードの説明
最初はeraseを使うだけで、insertは思わずベクトルに近づいた.
タイムアウトしてnサイズとo(n^3)になることを知っています.
(erase、insertはそれぞれfor文形式であることを忘れないでください)
nは100000に制限され,1秒,2重がゲートになってもだめなので,2つのスタックで再解放する.
スタックコード
😒タイムアウトコード
#include<iostream>
#include<vector>
#include<string>
using namespace std;
vector<string> a;
vector<vector<char>> result;
int N;
vector<char> b;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
result.push_back(b);
int m = 0;
cin >> N;
for (int i = 0; i < N; i++) {
string abc;
cin >> abc;
a.push_back(abc);
}
for (int j = 0; j < N; j++) {
int k=a[j].size();
int cursor = 0;
for (int i = 0; i < k; i++) {
if (a[j][i] == '<') {
if(cursor>0)
cursor--;
}
else if (a[j][i] == '>') {
if (cursor>=result[m].size()) continue;
cursor++;
}
else if (a[j][i] == '-') {
if (cursor == 0) continue;
if (cursor >= result[m].size()) continue;
if (!result[m].empty()) {
result[m].erase(result[m].begin() + (cursor-1));
cursor--;
}
}
else {
result[m].insert(result[m].begin() + cursor, a[j][i]);
cursor++;
}
}
m++;
result.push_back(b);
}
int total = result.size();
for (int i = 0; i < total; i++) {
for (int j = 0; j < result[i].size(); j++)
{
cout << result[i][j];
}
cout << endl;
}
return 0;
}
Reference
この問題について(5397番キーロック), 我々は、より多くの情報をここで見つけました https://velog.io/@trevor522/5397번-키로거テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol