알고리즘

[알고리즘] 백준 10942 - 팰린드롬?

blueberrysoda 2024. 8. 1. 22:45
#include <iostream>
using namespace std;

int N, M;
int Arr[2001];
bool DP[2001][2001];

void solve(){
    for(int i=1; i<=N; i++){
        DP[i][i] = true;
    }

    for(int i=1; i<N; i++){
        if(Arr[i] == Arr[i+1]){
            DP[i][i+1] = true;
        }
    }

    for(int i=2; i<N; i++){
        for(int j=1; j<=N-i; j++){
            if(Arr[j] == Arr[j+i] && DP[j+1][j+i-1] == true){
                DP[j][j+i] = true;
            }
        }
    }

    return;
}

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    cin >> N;
    for(int i=1; i<=N; i++){
        cin >> Arr[i];
    }

    solve();

    cin >> M;
    int s, e;
    for(int i=0; i<M; i++){
        cin >> s >> e;
        cout << DP[s][e] ? 1 : 0;
        cout << "\n";
    }

    return 0;
}