fork download
  1.  
  2. // وَمَا تَوْفِيقِي إِلَّا بِاللَّهِ عَلَيْهِ تَوَكَّلْتُ وَإِلَيْهِ أُنِيبُ
  3.  
  4. #include <bits/stdc++.h>
  5. #define T int t;cin>>t;while(t--)
  6. #define fast ios_base::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr)
  7. #define ll long long
  8. #define int ll
  9. #define endl '\n'
  10. using namespace std;
  11.  
  12. void Abady() {
  13. int n; cin >> n;
  14. string s; cin >> s;
  15. n*=2;
  16. pair<char,char> s1[n],s2[n];
  17. bool b=1;
  18. for(int i=0;i<n;i++) {
  19. s1[i].first = s[i];
  20. if (b) {
  21. b = !b;
  22. s1[i].second = 'B';
  23. }
  24. else {
  25. b = !b;
  26. s1[i].second = 'A';
  27. }
  28. }
  29. b=0;
  30. for(int i=0;i<n;i++) {
  31. s2[i].first = s[i];
  32. if (b) {
  33. b = !b;
  34. s2[i].second = 'B';
  35. }
  36. else {
  37. b = !b;
  38. s2[i].second = 'A';
  39. }
  40. }
  41. vector<int> v1_ab , v1_ba;
  42. for (int i=0;i<n;i++) {
  43. if (s1[i].first=='A' && s1[i].second=='B') v1_ab.push_back(i);
  44. if (s1[i].first=='B' && s1[i].second=='A') v1_ba.push_back(i);
  45. }
  46. int ans1=0;
  47. while (v1_ba.size() && v1_ab.size()) {
  48. ans1 += abs(v1_ba.back()-v1_ab.back());
  49. v1_ab.pop_back();
  50. v1_ba.pop_back();
  51. }
  52. // -----
  53. vector<int> v2_ab , v2_ba;
  54. for (int i=0;i<n;i++) {
  55. if (s2[i].first=='A' && s2[i].second=='B') v2_ab.push_back(i);
  56. if (s2[i].first=='B' && s2[i].second=='A') v2_ba.push_back(i);
  57. }
  58. int ans2=0;
  59. while (v2_ba.size() && v2_ab.size()) {
  60. ans2 += abs(v2_ba.back()-v2_ab.back());
  61. v2_ab.pop_back();
  62. v2_ba.pop_back();
  63. }
  64. cout << min(ans1,ans2) << endl;
  65. }
  66.  
  67. signed main() {
  68. fast;
  69. Abady();
  70. }
  71.  
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
0