必要な情報の精査
「どの国が存在し,どの国が存在しないのか」という情報を管理しようとすると, 程度の では一般的にメモリを確保できません。
そこで出力が求められるクエリに注目すると,国の数を答えなければならないので,「現時点で存在する国の数」という情報が必要であり,「どの国が存在し,どの国が存在しないのか」という情報を保持しておく必要はありません。
よって,現時点の国の数を管理しておき,クエリ での増減を考えれば良いです。
具体的には,現時点の国の数を とすると,はじめは です。
クエリ では,国が つ無くなり,新たに つ建国されるので, を 減らします。
クエリ では,国が つ無くなり,新たに つ建国されるので, を 増やします。
このようにクエリ では処理を行い,クエリ ではその時点の を出力すれば良いです。
実装例(C++)
xxxxxxxxxx
using namespace std;
using ll = long long;
int main() {
ll n; int q; cin >> n >> q;
ll cnt = n;
for(int i = 0; i < q; i++) {
int c; cin >> c;
if(c == 1) {
// クエリ1
ll dummy; cin >> dummy >> dummy;
cnt--;
}else if(c == 2) {
// クエリ2
ll dummy; cin >> dummy;
cnt++;
}else{
// クエリ3
cout << cnt << '\n';
}
}
return 0;
}