Buongiorno, stavo provando a risolvere questo problema, ma non riesco a capire perché il mio codice sbaglia alcuni casi.
void solve(int t) {
int N;
cin >> N;
vector<pair<int,int>> X(N);
for(int i = 0; i < N; ++i) {
cin >> X[i].second >> X[i].first;
}
sort(X.begin(),X.end());
int risposta = 0;
int dp[N];
for(int i=N-1;i>=0;i--){
dp[i]=1;
for(int j=i+1;j<N;j++){
if((X[i].first<=X[j].first)&&(X[i].second<=X[j].second)){
dp[i]=max(dp[i],dp[j]+1);
}
}
}
// aggiungi codice..
for(int i=0;i<N;i++)risposta=max(risposta,dp[i]);
cout << "Case #" << t << ": " << risposta << "\n";
}