#include <iostream>
using namespace std;
#include <vector>
char nextGreatestLetter(vector<char>& letters, char target) {
int left = 0, right = letters.size();
while (left < right) {
int mid = left + (right - left) / 2;
if (letters[mid] > target)
right = mid;
else
left = mid + 1;
}
return letters[left % letters.size()];
}
int main() {
vector<char> letters = {'c', 'f', 'j'};
char target = 'c';
cout << "Next greatest letter: " << nextGreatestLetter(letters, target) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojaW5jbHVkZSA8dmVjdG9yPgoKY2hhciBuZXh0R3JlYXRlc3RMZXR0ZXIodmVjdG9yPGNoYXI+JiBsZXR0ZXJzLCBjaGFyIHRhcmdldCkgewogICAgaW50IGxlZnQgPSAwLCByaWdodCA9IGxldHRlcnMuc2l6ZSgpOwoKICAgIHdoaWxlIChsZWZ0IDwgcmlnaHQpIHsKICAgICAgICBpbnQgbWlkID0gbGVmdCArIChyaWdodCAtIGxlZnQpIC8gMjsKICAgICAgICBpZiAobGV0dGVyc1ttaWRdID4gdGFyZ2V0KQogICAgICAgICAgICByaWdodCA9IG1pZDsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGxlZnQgPSBtaWQgKyAxOwogICAgfQoKICAgIHJldHVybiBsZXR0ZXJzW2xlZnQgJSBsZXR0ZXJzLnNpemUoKV07Cn0KCmludCBtYWluKCkgewogICAgdmVjdG9yPGNoYXI+IGxldHRlcnMgPSB7J2MnLCAnZicsICdqJ307CiAgICBjaGFyIHRhcmdldCA9ICdjJzsKCiAgICBjb3V0IDw8ICJOZXh0IGdyZWF0ZXN0IGxldHRlcjogIiA8PCBuZXh0R3JlYXRlc3RMZXR0ZXIobGV0dGVycywgdGFyZ2V0KSA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9Cg==