fork download
  1. // 252
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4.  
  5. int n, m;
  6. int res;
  7. string s, a, b;
  8. int f[102][2][102];
  9.  
  10. int main()
  11. {
  12. cin >> s;
  13. cin >> a >> b;
  14.  
  15. n = a.size();
  16. m = s.size();
  17. s = " " + s;
  18. a = " " + a;
  19. b = " " + b;
  20.  
  21.  
  22. for(int i = 0; i <= n; i++) f[i][0][0] = f[i][1][0] = 1;
  23. for(int i = 1; i <= n; i++)
  24. {
  25. for(int k = 1; k <= m; k++)
  26. {
  27. if(k > i) break;
  28. if(a[i] == s[k])
  29. {
  30. for(int j = i-1; j >= 0; j--)
  31. {
  32. if(b[j] == s[k-1]) f[i][0][k] += f[j][1][k-1];
  33. }
  34. }
  35.  
  36. if(b[i] == s[k])
  37. {
  38. for(int j = i-1; j >= 0; j--)
  39. {
  40. if(a[j] == s[k-1]) f[i][1][k] += f[j][0][k-1];
  41. }
  42. }
  43. }
  44. }
  45.  
  46.  
  47. for(int i = 1; i <= n; i++) res += f[i][0][m] + f[i][1][m];
  48. cout << res;
  49.  
  50.  
  51.  
  52. return 0;
  53. }
Success #stdin #stdout 0.01s 5284KB
stdin
RNG
NIRSGNG
RSNNGSS
stdout
2