Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int Nmax = 2005;
- char s[Nmax];
- int a[Nmax][Nmax] , aux[Nmax][Nmax] , n;
- inline bool CHECK(int i , int j)
- {
- while(i <= j)
- {
- if(s[i] != s[j])
- return false;
- i++;
- j--;
- }
- return true;
- }
- int main()
- {
- int x , y , xx , yy;
- long long sol = 0;
- cin >> (s+1);
- n = strlen(s+1);
- for(int i = 1 ; i <= n ; i++)
- for(int j = i ; j <= n ; j++)
- a[i][j] = aux[i][j] = CHECK(i , j);
- for(int i = 1 ; i <= n ; i++)
- for(int j = 1 ; j <= n ; j++)
- a[i][j] = a[i][j] + a[i - 1][j] + a[i][j - 1] - a[i - 1][j - 1];
- for(int i = 1 ; i <= n ; i++)
- for(int j = 1 ; j <= n ; j++)
- if(aux[i][j] == 1)
- {
- x = max(i , j) + 1;
- y = max(i , j) + 1;
- xx = n;
- yy = n;
- sol += a[xx][yy] - a[x - 1][yy] - a[xx][y - 1] + a[x - 1][y - 1];
- }
- cout << sol << "\n";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement