fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <list>
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. list <int> a;
  9. string s;
  10. cin >> s;
  11. int kfront=1,kback=0;
  12. a.push_front(1);
  13. if(s[1]=='h'||s[1]=='m')
  14. {
  15. a.push_front(2);
  16. }
  17. if(s[1]=='t')
  18. {
  19. a.push_back(2);
  20. }
  21. auto sered=a.end();
  22. sered--;
  23. for(int i=3;i<=s.size();i++)
  24. {
  25. if(s[i-1]=='h')
  26. {
  27. a.push_front(i);
  28. kfront++;
  29. }
  30. else if(s[i-1]=='t')
  31. {
  32. a.push_back(i);
  33. kback++;
  34. }
  35. if (s[i-1]=='m')
  36. {
  37. a.insert(sered,i);
  38. kfront++;
  39. }
  40. if(kfront-kback>=2)
  41. {
  42. sered--;
  43. kfront--;
  44. kback++;
  45. }
  46. else if(kback-kfront>=1)
  47. {
  48. sered++;
  49. kfront++;
  50. kback--;
  51. }
  52. }
  53. auto iter=a.begin();
  54. for(int i=0;i<a.size();i++)
  55. {
  56. cout << *iter++ << " ";
  57. }
  58. }
Success #stdin #stdout 0s 4540KB
stdin
hhtmmhhhmt
stdout
8 7 6 2 9 4 5 1 3 10