結果

問題 No.2796 Small Matryoshka
ユーザー lingfunnylingfunny
提出日時 2024-06-28 21:51:07
言語 C++23
(gcc 12.3.0 + boost 1.83.0)
結果
AC  
実行時間 173 ms / 2,000 ms
コード長 758 bytes
コンパイル時間 2,700 ms
コンパイル使用メモリ 248,444 KB
実行使用メモリ 14,464 KB
最終ジャッジ日時 2024-06-28 21:51:13
合計ジャッジ時間 5,087 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
5,248 KB
testcase_01 AC 2 ms
5,376 KB
testcase_02 AC 2 ms
5,376 KB
testcase_03 AC 2 ms
5,376 KB
testcase_04 AC 2 ms
5,376 KB
testcase_05 AC 18 ms
5,376 KB
testcase_06 AC 131 ms
12,928 KB
testcase_07 AC 2 ms
5,376 KB
testcase_08 AC 93 ms
10,752 KB
testcase_09 AC 152 ms
14,336 KB
testcase_10 AC 173 ms
14,464 KB
testcase_11 AC 166 ms
14,464 KB
testcase_12 AC 59 ms
8,576 KB
testcase_13 AC 8 ms
5,376 KB
testcase_14 AC 49 ms
7,808 KB
testcase_15 AC 13 ms
5,376 KB
testcase_16 AC 22 ms
5,504 KB
testcase_17 AC 102 ms
9,984 KB
testcase_18 AC 122 ms
11,008 KB
testcase_19 AC 31 ms
5,888 KB
testcase_20 AC 44 ms
6,656 KB
testcase_21 AC 100 ms
9,984 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
using namespace std;
using LL = long long;

const int mxn = 2e5 + 10;

int n;

struct node {
	int R, r;
	bool operator < (const node &rhs) const {
		return R == rhs.R ? r > rhs.r : R > rhs.R;
	}
} a[mxn];

multiset<node> s;

int main() {
	ios::sync_with_stdio(false);
	cin >> n;
	for (int i = 1; i <= n; ++i) {
		cin >> a[i].r >> a[i].R;
		s.insert(a[i]);
	}
	int ans = -1;
	while (!s.empty()) {
		++ans;
		node x = *begin(s);
		s.erase(begin(s));
		for (auto it = s.lower_bound({ x.r, INT_MAX }); it != end(s);) {
			assert(x.r >= it -> R);
			// printf("x = (%d, %d), it = (%d, %d)\n",
			// x.R, x.r, it -> R, it -> r);
			x = *it;
			s.erase(it);
			it = s.lower_bound({ x.r, INT_MAX });
		}
	}
	cout << ans << "\n";
	return 0;
}
0