題目描述
祖瑪是一款曾經風靡全球的遊戲,其玩法是:在一條軌道上初始排列著若干
個彩色珠子,其中任意三個相鄰的珠子不會完全同色。此後,你可以發射珠子到
軌道上並加入原有序列中。一旦有三個或更多同色的珠子變成相鄰,它們就會立
即消失。這類消除現象可能會連鎖式發生,其間你將暫時不能發射珠子。
開發商最近準備為玩家寫一個遊戲過程的回放工具。 他們已經在遊戲內完成
了過程記錄的功能,而回放功能的實現則委託你來完成。
遊戲過程的記錄中,首先是軌道上初始的珠子序列,然後是玩家接下來所做
的一系列操作。你的任務是,在各次操作之後及時計算出新的珠子序列。
輸入輸出格式
輸入格式:第一行是一個由大寫字母'A'~'Z'組成的字串, 表示軌道上初始的珠子序列,
不同的字母表示不同的顏色。
第二行是一個數字n,表示整個回放過程共有n次操作。
接下來的n行依次對應於各次操作。每次操作由一個數字k和一個大寫字母∑
描述, 以空格分隔。 其中, ∑為新珠子的顏色。 若插入前共有m顆珠子, 則k ∈ [0,m]
表示新珠子嵌入之後(尚未發生消除之前)在軌道上的位序。
輸出格式:輸出共n行,依次給出各次操作(及可能隨即發生的消除現象)之後軌道上
的珠子序列.
如果軌道上已沒有珠子,則以“-”表示。
輸入輸出樣例
輸入樣例#1:
ACCBA 5 1 B 0 A 2 B 4 C 0 A
輸出樣例#1:
ABCCBA AABCCBA AABBCCBA - A
說明
100%的資料滿足1 ≤ n ≤ 10^3 ,0 ≤ m ≤ 2 × 10^3 。
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 int where; 6 int flag=0; 7 string c; 8 string a; 9 int n; 10 void pd() 11 { 12 int tot=1; 13 do 14 { 15 flag=0; 16 tot=1; 17 int h=where-1,t=where+1,now=where; 18 while(a[h]==a[now]&&h>=0) 19 { 20 tot++; 21 h--; 22 } 23 h++; 24 while(a[t]==a[now]&&t<a.size()) 25 { 26 tot++; 27 t++; 28 } 29 t--; 30 if(tot>=3) 31 { 32 //cout<<endl<<a<<"******"<<endl; 33 a.erase(h,tot); 34 flag=1; 35 //cout<<endl<<a<<"-------"<<endl; 36 } 37 where=h; 38 }while(flag==1); 39 40 } 41 int main() 42 { 43 getline(cin,a); 44 scanf("%d",&n); 45 while(n--) 46 { 47 cin>>where>>c; 48 a.insert(where,c); 49 pd(); 50 if(a.size()==0) 51 cout<<"-"<<endl; 52 else cout<<a<<endl; 53 } 54 return 0; 55 }