Submission #763838

#TimeUsernameProblemLanguageResultExecution timeMemory
763838NK_Advertisement 2 (JOI23_ho_t2)C++17
100 / 100
1875 ms61988 KiB
#include <bits/stdc++.h>

using namespace std;

#define nl '\n'

using ll = long long;

int main() {
	cin.tie(0)->sync_with_stdio(0);

	int N; cin >> N;
	vector<array<int, 2>> A(N);
	for(auto& x : A) {
		cin >> x[0] >> x[1];
	}

	set<int> S; for(int i = 0; i < N; i++) S.insert(i);

	vector<int> IDX; for(int i = 0; i < N; i++) IDX.push_back(i);

	for(int t = 0; t < 2; t++) {
		sort(begin(IDX), end(IDX), [&](int x, int y) {
			if (A[x] == A[y]) return x < y;
			return A[x] < A[y];
		});	
		vector<int> stk = {-1};
		for(auto i : IDX) {
			while(stk.back() != -1 && (A[stk.back()][1] - A[stk.back()][0]) <= (A[i][1] - A[i][0])) {
				stk.pop_back();
			}
			stk.push_back(i);
		}

		set<int> NS;
		for(auto x : stk) {
			// cout << x << " ";
			if (S.count(x)) NS.insert(x);
		}
		// cout << nl;
		S.swap(NS);

		for(auto& x : A) x[0] = -x[0];
	}
	
	cout << size(S) << nl;

	return 0;
}

/*

*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...