Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- int LIS(std::vector<int> &v) {
- if (v.size() == 0) {
- return 0;
- }
- std::vector<int> tail(v.size(), 0);
- int length = 1;
- tail[0] = v[0];
- for (size_t i = 1; i < v.size(); i++) {
- if (v[i] < tail[0]) {
- tail[0] = v[i];
- } else if (v[i] > tail[length-1]) {
- tail[length++] = v[i];
- } else {
- tail[std::lower_bound(tail.begin( ), tail.begin( ) + length, v[i]) - tail.begin( )] = v[i];
- }
- }
- return length;
- }
- int main() {
- std::string cad;
- std::cin >> cad;
- std::vector<int> v;
- for (int i = 0; i < cad.size( ); ++i) {
- v.emplace_back(cad[i] - 'a');
- }
- std::cout << 26 - LIS(v) << '\n';
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement