fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4.  
  5. void solve()
  6. {
  7. int n,ile_l = 0,ile_p = 0,ile_z = 0;
  8. int gdz_l = -1,gdz_p = -1;
  9. cin >> n;
  10. string a;
  11. cin >> a;
  12. for(int i = 0;i < n;++i)
  13. {
  14. if(a[i] == 'P')
  15. {
  16. gdz_p = i;
  17. }
  18. if(a[i] == 'L')
  19. {
  20. gdz_l = i;
  21. }
  22. if(gdz_l != -1 && gdz_p != -1 && gdz_l > gdz_p)
  23. {
  24. if((gdz_l-gdz_p-1)%2 == 1)
  25. {
  26. ile_p +=
  27. ile_z++;
  28. }
  29. ile_p += (gdz_l-gdz_p-1)/2;
  30. ile_l += (gdz_l-gdz_p-1)/2;
  31. gdz_l = -1;
  32. gdz_p = -1;
  33. }
  34. }
  35. char zna = 'L';
  36. int gdz = -1;
  37. for(int i = 0;i < n;++i)
  38. {
  39. if(a[i] == 'L')
  40. {
  41. if(zna == 'L')
  42. {
  43. ile_l += i-gdz;
  44. }
  45. else
  46. ile_l++;
  47. zna = 'L';
  48. gdz = i;
  49. }
  50. if(a[i] == 'P')
  51. {
  52. zna = 'P';
  53. gdz = i;
  54. }
  55. }
  56. zna = 'P';
  57. gdz = n;
  58. for(int i = n-1;i >= 0;--i)
  59. {
  60. if(a[i] == 'P')
  61. {
  62. if(zna == 'P')
  63. {
  64. ile_p += gdz-i;
  65. }
  66. else
  67. ile_p++;
  68. zna = 'P';
  69. gdz = i;
  70. }
  71. if(a[i] == 'L')
  72. {
  73. zna = 'L';
  74. gdz = i;
  75. }
  76. }
  77. ile_z += (n-ile_z-ile_p-ile_l);
  78.  
  79. cout<< ile_l << ' ' << ile_p << ' ' << ile_z << endl;
  80. }
  81.  
  82.  
  83. int main()
  84. {
  85. ios_base::sync_with_stdio(0);
  86. int t;
  87. cin >> t;
  88. for(int i = 0;i < t;++i)
  89. {
  90. solve();
  91. }
  92. }
  93.  
Success #stdin #stdout 0s 5292KB
stdin
2
2 .. 6 PP...L
stdout
0 0 2
2 3 1