Viaggio intrigante (Terry 2023)

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";
}

Sarebbe utile dare qualche informazione in più su cosa sta facendo il codice.
Comunque mi sembra che tu stia risolvendo completamente diverso da quello richiesto nel testo del problema.

1 Mi Piace