Advertisement
a53

MPalind

a53
Mar 9th, 2017
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1.  
  2. #include <fstream>
  3. #include <cstring>
  4. #define MOD 666013
  5.  
  6. using namespace std;
  7.  
  8. ifstream fin("mpalind.in");
  9. ofstream fout("mpalind.out");
  10.  
  11. int A[1010][1010], n, m;
  12. char s[1010];
  13. bool P[1010][1010];
  14.  
  15. bool palindrom(int x, int y);
  16.  
  17. int main()
  18. {
  19. int i, j, k, p;
  20. fin.getline(s, 1008);
  21. n = strlen(s);
  22. for (i = 0; i < n; i++)
  23. {
  24. for (j = i; j < n; j++)
  25. P[i][j] = palindrom(i, j);
  26. }
  27. for (i = 0; i < n; i++)
  28. A[i][i] = 1;
  29. for (k = 2; k <= n; k++)
  30. {
  31. for (i = 0; i <= n - k; i++)
  32. {
  33. j = i + k - 1;
  34. //A[i][j] = 1;
  35. A[i][j] += P[i][j];
  36. for (p = i; p < j; p++)
  37. {
  38. if (P[i][p])
  39. A[i][j] = (A[i][j] % MOD + A[p + 1][j] % MOD) % MOD;
  40. //if (P[p + 1][j])
  41. //A[i][j] = (A[i][j] % MOD + A[i][p] % MOD) % MOD;
  42. }
  43. }
  44. }
  45. fin >> m;
  46. for (i = 1; i <= m; i++)
  47. {
  48. fin >> j >> k;
  49. fout << A[j - 1][k - 1] << '\n';
  50. }
  51. fout.close();
  52. return 0;
  53. }
  54.  
  55. bool palindrom(int x, int y)
  56. {
  57. int i, mij = (x + y) / 2;
  58. for (i = x; i <= mij; i++)
  59. {
  60. if (s[i] != s[y - i + x])
  61. return 0;
  62. }
  63. return 1;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement