ios_base... 을 안해주면 시간초과가 났던 문제
처음에 for문으로 돌려도 시간초과 안날 것 같아서 해봤는데 시간초과가 났다.
근데 DP로 짜니 for문보다 훨씬 빠르고 깔끔하게 짜졌다. 좀 익숙해 진 것 같다.
#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>
using namespace std;
int tb[2001];
int cache[2001][2001];
int go(int a, int b) {
if (b - a<1) {
return 1;
}
if (cache[a][b] != -1) {
return cache[a][b];
}
int& ret = cache[a][b] = 0;
if (tb[a] == tb[b]) {
ret = go(a + 1, b - 1);
}
else {
ret = 0;
}
return ret;
}
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
memset(cache, -1, sizeof(cache));
int n;
cin >> n;
for (int i = 0; i<n; ++i) {
cin >> tb[i];
}
int t;
cin >> t;
while (t--) {
int a, b;
cin >> a >> b;
cout << go(a - 1, b - 1) << '\n';
}
return 0;
}