北プログラミングとアルゴリズム(C)クイズの概要(2020年春)
説明
:コマンド以下の完全なプログラム書き込み
指定された配列番号IDを作成します(ID <10000) -新しい新しいIDを
整数配列にnum-- ID ID番号を追加NUMの追加
順序で結合ID1 ID1マージをし、ID2 id2--数、及びID2を空
シーケンスIDに一意id--削除繰り返しエレメント
スペースで区切られた、配列番号の要素の多数に小さいから出力- IDアウト
入力
数nの最初の行を、それが注文の数を表す(N <= 200000)。各コマンドの後にn行。
出力
トピックによっては、出力が必要。
样例输入
16
新しい1
新2
アドオン1
アドイン1 2
アドオン1 3
追加2 1
アドオン2 2
アドオン2 3
アド2 4
1アウト
2アウト
マージ1 2
1アウト
2アウト
1ユニーク
1アウト
出力例
。1 2 3
1 2 3 4
。1. 1. 4. 3. 3 2 2
1 2 3 4
分析
これは、list
テンプレートを使用するのは簡単
#include<iostream>
#include<list>
using namespace std;
typedef list<int> List;
int main()
{
List lists[20000];
List::iterator it;
int num,count1,count2;
cin >> num;
char str[100];
while(num--){
cin >> str;
switch(str[0]){
case 'a':
cin >> count1 >> num;
lists[count1].push_back(num);
break;
case 'n':
cin >> count1;
break;
case 'm':
cin >> count1 >> count2;
lists[count1].merge (lists[count2]);
break;
case 'u':
cin >>count1;
lists[count1].sort();
lists[count1].unique ();
break;
case 'o':
cin >> count1;
lists[count1].sort();
for( it = lists[count1].begin(); it != lists[count1].end(); it ++)
cout<<*it<<" ";
cout << endl;
break;
}
}
return 0;
}