タイトル説明
「Xドラゴンボールは」パズルゲームです。ゲームを有する N- (2 | N- キューに所定の順序で配置され、互いに異なるパールに従って番号付け)は、各パール上記番号を有しています。各操作、選択して出力する二つの隣接パールパールキュー、キューの先の端部に(宛先キューは、最初は空であり、2つのパール前後同じ順序)、及び元のキューパールを除去無効。元ドラゴンボールキューが空になるまで、彼は数回繰り返します。可視同じ宛先キューの順につながらない決定は同じではありませんので。これで、すべての要求、目標最大キュー辞書順スキーム。あなただけが宛先キューをすることができ与える必要があります。
オリジナルパールキュー[1,3,2,4-]、2および3を除去することが可能である場合、例えば、このときの宛先キューは、[3,2]、元のキューは、パール[1,4]である。次に、左2つの宛先キューに真珠は、宛先キューが得られる[3,2,1,4]
入出力フォーマット
入力フォーマット:
最初の行、整数 N- 。
次の行、各ライン N の整数で、元のパールキューの数を示します。
出力フォーマット:
行、N- 整数。
サンプル入力と出力
説明
データの20%を、N- ≤ 。1 0。
データの60%を、N- ≤ 。1 0 。3。
データの100%に、N- ≤ 。1 0 。5、パール数Nを超えません。
アイデア:
パールこの事は良いことですが、学生が格好良いことを言うのを聞きました。。。
この問題の首長Yipaitaituiルームは、躊躇なくこの背の高い木の上で何かを言う、こんにゃくはああではないでしょう(戦うことが実際には、あまりにも怠惰な...)、タイトルをよく見、このタイトルはまだリストにリンクされていませんしかし、ポインタは、ああしていないようです。。。
そして、それについてシミュレートの配列を使用します。。。
唯一のいくつかの後、彼は彼の前に、出力後の出力、数字で彼の後ろのポイントと組み合わせて使用しないときは、すべてのフロントのポイントと後部とのリストを保存し、小さなに大きな探しすることができ彼の後ろ偶数背面にしてから行って
コード
1 #include<iostream>
2 using namespace std;
3 const int maxn=1e6+10;
4 int sum[maxn],head[maxn],next[maxn];
5 int main()
6 {
7 int n,m;
8 cin>>n;
9 for(int i=1;i<=n;i++)
10 {
11 cin>>sum[i];
12 next[sum[i-1]]=sum[i];
13 head[sum[i]]=sum[i-1];
14 }
15 for(int i=n;i>=1;i--)
16 {
17 if(next[i])
18 {
19 cout<<i<<" "<<next[i]<<" ";
20 next[head[i]]=next[next[i]];
21 head[next[head[i]]]=head[i];
22 next[next[i]]=0;
23 }
24 }
25 cout<<endl;
26 return 0;
27 }