제출 #1135568

#제출 시각아이디문제언어결과실행 시간메모리
1135568yellowtoadAdvertisement 2 (JOI23_ho_t2)C++20
10 / 100
326 ms23596 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#define f first
#define s second
#define int long long
using namespace std;

int n, suf[500010], ans = 1e9;
pair<int,int> a[500010], b[500010];
vector<int> v;

signed main() {
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> a[i].f >> a[i].s;
		b[i] = a[i];
		a[i].s -= a[i].f;
		b[i].s += b[i].f;
		b[i].s = -b[i].s;
	}
	sort(a+1,a+n+1);
	sort(b+1,b+n+1);
	for (int i = n; i >= 1; i--) {
		b[i].s = -b[i].s;
		while ((v.size()) && (v.back() <= b[i].s)) v.pop_back();
		v.push_back(b[i].s);
		suf[i] = v.size();
	}
	v.clear();
	ans = suf[1];
	for (int i = 1; i <= n; i++) {
		if ((i != 1) && (i != n) && (a[i].f == a[i-1].f) && (a[i].f == a[i+1].f)) continue;
		while ((v.size()) && (v.back() <= a[i].s)) v.pop_back();
		v.push_back(a[i].s);
		ans = min(ans,(int)v.size()+suf[i]-1);
	}
	cout << ans << endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...