和 std 拍了几分钟了,但交上去还是 0 分。
#include <bits/stdc++.h>
using namespace std;
const int kMaxN = 1e5 + 5;
struct A {
int x, y;
} a[kMaxN];
int b[kMaxN], f[kMaxN], n, ans;
map<int, int> mp;
vector<int> v[kMaxN];
void DP(int x) {
mp.clear();
for (int i = 0; i < v[x].size(); i++) {
int s = v[x][i];
f[i + 1] = mp[s - 1] + 1;
mp[s] = max(mp[s], f[i + 1]);
ans = max(ans, f[i + 1]);
}
}
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i].x >> a[i].y;
b[i] = a[i].x;
}
sort(b + 1, b + n + 1);
int t = unique(b + 1, b + n + 1) - b - 1;
for (int i = 1; i <= n; i++) {
a[i].x = lower_bound(b + 1, b + t + 1, a[i].x) - b;
v[a[i].x].push_back(a[i].y);
}
for (int i = 1; i <= t; i++) {
sort(v[i].begin(), v[i].end());
DP(i);
}
cout << n - ans;
return 0;
}