classSolution{public:
string reverseStr(string s,int k){int n = s.length();for(int i =0; i < n; i +=2* k){reverse(s.begin()+ i, s.begin()+min(i + k, n));}return s;}};
classSolution{public:
vector<int>smallestTrimmedNumbers(vector<string>& nums, vector<vector<int>>& queries){
vector<int>ans(queries.size());int n = nums.size(), m = nums[0].length();int idx[n];for(int i =0; i < queries.size();++i){auto&q = queries[i];iota(idx, idx + n,0);stable_sort(idx, idx + n,[&](int a,int b){auto&s = nums[a],&t = nums[b];for(int j = m - q[1]; j < m;++j)if(s[j]!= t[j])return s[j]< t[j];returnfalse;});
ans[i]= idx[q[0]-1];}return ans;}};
classTextEditor{
list<char> l;
list<char>::iterator cur = l.begin();public:TextEditor(){}voidaddText(string text){for(char ch : text)
l.insert(cur, ch);}intdeleteText(int k){int k0 = k;for(; k && cur != l.begin();--k)
cur = l.erase(prev(cur));return k0 - k;}
string text(){
string s;auto it = cur;for(int k =10; k && it != l.begin();--k){
it =prev(it);
s +=*it;}reverse(s.begin(), s.end());return s;}
string cursorLeft(int k){for(; k && cur != l.begin();--k)
cur =prev(cur);returntext();}
string cursorRight(int k){for(; k && cur != l.end();--k)
cur =next(cur);returntext();}};/**
* Your TextEditor object will be instantiated and called as such:
* TextEditor* obj = new TextEditor();
* obj->addText(text);
* int param_2 = obj->deleteText(k);
* string param_3 = obj->cursorLeft(k);
* string param_4 = obj->cursorRight(k);
*/