【ABC過去問演習】茶色埋め 1 日目
解いた問題
- ABC 159 の D 問題
- ABC 165 の D 問題
- ABC 158 の D 問題
- ABC 154 の D 問題
ABC 158 D 問題の復習
問題
リンク先参照
D - String Formation
解き方
配列の反転はだいたい らしい(後で調べる)。また、string 型配列の先頭要素への挿入も時間がかかってしまうらしい。これは dequeue を用いることで解決できるらしい(これも後で調べる)。自分の提出したコードは string 型の先頭要素に普通に挿入しているので遅いが一応通った。
AC したコード
#include<bits/stdc++.h> using namespace std; using ll=int64_t; int main(){ string s; cin >>s; int q;cin>>q; int t,f; char c; int tmp=0; for(int i=0;i<q;i++){ cin >>t; if(t==1){ tmp++; } else{ cin >>f; cin >>c; if((f==1&&tmp%2==0)||f==2&&tmp%2==1){ s=c+s; } else if((f==2&&tmp%2==0)||f==1&&tmp%2==1){ s.push_back(c); } } } int size=s.size(); if(tmp%2==0){ for(int i=0;i<size;i++){ cout<<s.at(i); } cout <<endl; } else{ for(int i=size-1;i>=0;i--){ cout <<s.at(i); } cout <<endl; } }