#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,w[5010],h[5010],dp[5010],ans[5010];
int dfs(int x){
int maxn;
if(dp[x]) return dp[x];
for(int i = 1;i <= n;i++){
if(w[x] < w[i] && h[x] < h[i]){
int t = dfs(i);
if(t > maxn){
maxn = t;
ans[x] = i;
}
}
}
dp[x] = maxn + 1;
return dp[x];
}
int main(){
cin >> n >> w[0] >> h[0];
for(int i = 1;i <= n;i++) cin >> w[i] >> h[i];
dfs(0);
cout << dp[0] - 1 << endl;
int k = 0;
while(ans[k]){
cout << ans[k] << " ";
k = ans[k];
}
cout << endl;
return 0;
}
本地输出是对的,但是 CF 显示样例输出是错的。