質問表面:
説明
Zは小さな趣味の数学の学生です。最近では、彼は、整数列の数にいくつかのプロパティを調べました。
彼の研究を容易にするために、我々は列エディタの数「オープン連続線プロセッサ」と呼ばれる小さなZを、達成したいと考えています。
まず、列エディタ無番号の数、1つのカーソルのみ。シリーズエディタは5つの操作のサポートを必要とします。
• \(\ texttt I {} \) X X現在のカーソルの前に挿入ディジタル。
• \(\ texttt {D} \)現在のカーソルを削除する前に数。
• \(\ texttt {L} \)カーソルをデジタル前方に移動させます。
• \(\ R&LT texttt {} \)カーソルバック一桁。
• \(\ texttt {Q kを} \)の列の数、カーソルが設定される前に、{A1、A2、...、 }、 と前kビットのプレフィックスの最大出力とk≤n確実。
入力
最初の行番号N、操作の数を含んでいます。
N行を含む次のコマンドを含む各行
出力
コマンドの各々についてQ kは、整数演算への回答を出力します。
サンプル入力
8
I 2
I -1
I 1
Q 3
L
D
R
Q 2
サンプル出力
2
3
データ制約
【数据规模】 对于 50% 的数据,N ≤ 1000; 对于 80% 的数据,N ≤ 100000; 对于 100% 的数据,N ≤ 1000000,插入的数字绝对值大小不会超过 1000。
本体:
試験は、列の二重リンクリスト格納された整数を開いたときに、それぞれ、最初のリスト全体への2つのポインタやカーソル前開き。しかし、クエリが明らかである(\ \シータ(N)\ ) の時間複雑さ、意志\(\テキストTLE} {\) 。
だから我々は、スタックを使用することができます。2つのスタックを開くと、カーソルの左の列の数を表す(S1 \)\カーソルの右にある数と列数(S2 \)\。その後、オープン配列\(Max_k \)は、 k個の接頭前レベルと最大値を表し、。
実行するときに(\ texttt {L} \ \ ) ときに、別のスタックに、スタックの最上位の値。実行(\ \ texttt {R} \ ) 、別のスタックながらスタックの先頭の値を更新\(最大\) 、実行\(\ texttt {D} \ ) 、削除\(S1 \)スタック。実行\(\ texttt {I} \ ) 、スタック、更新\(最大\) 。ダイレクト出力を返します\(Max_k \)だけで罰金。