你將要實現乙個功能強大的整數序列編輯器。
在開始時,序列是空的。
1、「i x」,在游標處插入數值x。
2、「d」,將游標前面的第乙個元素刪除,如果前面沒有元素,則忽略此操作。
3、「l」,將游標向左移動,跳過乙個元素,如果左邊沒有元素,則忽略此操作。
4、「r」,將游標向右移動,跳過乙個元素,如果右邊沒有元素,則忽略次操作。
5、「q k」,假設此刻游標之前的序列為a1,a2,…,ana1,a2,…,an,輸出max1≤i≤ksimax1≤i≤ksi,其中si=a1+a2+…+aisi=a1+a2+…+ai。
第一行包含乙個整數q,表示指令的總數。
接下來q行,每行乙個指令,具體指令格式如題目描述。
每乙個「q k」指令,輸出乙個整數作為結果,每個結果佔一行。
1≤q≤106
|x|≤103
1≤k≤n
8
i 2i -1
i 1q 3ld
rq 2
2
3
下圖包含了對樣例的過程描述:
用兩個棧就能模擬過程
#includeusingnamespace
std;
typedef
long
long
ll;#define readc(x) scanf("%c",&x)
#define read(x) scanf("%d",&x)
#define read2(x,y) scanf("%d%d",&x,&y)
#define read3(x,y,z) scanf("%d%d%d",&x,&y,&z)
#define print(x) printf("%d\n",x)
#define mst(a,b) memset(a,b,sizeof(a))
#define pb push_back
#define mp make_pair
const
int inf = 0x3f3f3f3f
;const
int maxn = 1e6 + 5
;int
sum[maxn],mx[maxn];
int cnt = 0
;stack
s,q;
intmain()
if(c=='d'
) }
if(c=='l'
) }
if(c=='r'
) }
if(c=='q'
) }
}
利用棧做行編輯器
問題 include include include includeusing namespace std define true 1 define false 0 define ok 1 define error 0 define infeasible 1 define overflow 2 ty...
vim編輯器 編輯器之神
h 向左移動 j 向下移動 k 向上移動 l 向右移動 w 移動到下乙個單詞的首部 e 移動到下乙個單詞的尾部 b 移動到上乙個單詞的首部 移動到行首 移動到行尾 g 跳轉到文件的末尾 gg 跳轉到文件的開始複製操作 複製n行 nyy 2yy 移動游標到要寫入的位置,再按p 刪除操作 刪除多行 nd...
編輯器之神 vim編輯器
vi編輯器是所有unix及linux系統下標準的編輯器,類似於windows系統下的notepad 記事本 編輯器,由於在unix及linux系統的任何版本,vi編輯器是完全相同的,因此可以在其他任何介紹vi的地方都能進一步了解它,vi也是linux中最基本的文字編輯器,學會它後,我們將在linux...