func_code_string: #include <bits/stdc++.h>   using namespace std;   inline long long Readint() {     long long ret = 0;     int f = 1;     char ch;     do {       ch = getchar();       if (ch ==  - ) f *= -1;     } while (ch >= 0 && (ch <  0  || ch >  9 ));     while ( 0  <= ch && ch <=  9 ) {       ret = ret * 10 + ch -  0 ;       ch = getchar();     }     return ret * f;   }   void open() {     freopen( E.in ,  r , stdin);     freopen( E.out ,  w , stdout);   }   void close() {     fclose(stdin);     fclose(stdout);   }   const int MAXN = 101010;   set<int> sp[2];   char s[MAXN];   vector<int> ans;   int n;   void init() {     int cntl = 0, cntr = 0;     scanf( %s , s + 1);     n = strlen(s + 1);     for (int i = 1, _END_ = n; i <= _END_; i++)       if (s[i] ==  L )         cntl++;       else         cntr++;     if (cntl < cntr || (cntl == cntr && s[1] ==  R )) {       for (int i = 1, _END_ = n; i <= _END_; i++)         if (s[i] ==  L )           s[i] =  R ;         else           s[i] =  L ;     }     for (int i = 1, _END_ = n; i <= _END_; i++)       if (s[i] ==  L )         sp[0].insert(i);       else         sp[1].insert(i);   }   void work() {     int type = 0;     set<int>::iterator now;     int num = 0;     int tot = 0;     now = sp[0].begin();     num = *now;     sp[0].erase(now);     for (int i = 1, _END_ = n; i < _END_; i++) {       ans.push_back(num);       now = sp[type ^ 1].lower_bound(num);       if (now == sp[type ^ 1].end()) {         tot++;         now = sp[type ^ 1].begin();         num = *now;         sp[type ^ 1].erase(num);         type ^= 1;       } else {         if (sp[type].lower_bound(*now) == sp[type].end()) {           int mn = 0x3f3f3f3f;           if (sp[0].begin() != sp[0].end()) mn = min(mn, *sp[0].begin());           if (sp[1].begin() != sp[1].end()) mn = min(mn, *sp[1].begin());           if (mn < num && s[mn] != s[num]) {             tot++;             num = mn;             sp[type ^ 1].erase(num);             type ^= 1;             continue;           }         }         num = *now;         sp[type ^ 1].erase(num);         type ^= 1;       }     }     ans.push_back(num);     printf( %d n , tot);     for (int i = 0, _END_ = ans.size(); i < _END_; i++) printf( %d  , ans[i]);   }   int main() {     int _ = 0;     init();     work();     close();     return 0;   }   