Problem:
Score : 300 points

Problem Statement

Find the maximum possible sum of the digits (in base 10) of a positive integer not greater than N.

Constraints

1\leq N \leq 10^{16}

N is an integer.

Input

Input is given from Standard Input in the following format:

N

Output

Print the maximum possible sum of the digits (in base 10) of a positive integer not greater than N.

Sample Input 1

100

Sample Output 1

18

For example, the sum of the digits in 99 is 18, which turns out to be the maximum value.

Sample Input 2

9995

Sample Output 2

35

For example, the sum of the digits in 9989 is 35, which turns out to be the maximum value.

Sample Input 3

3141592653589793

Sample Output 3

137

Solution in C++14 (Clang 3.8.0) (judge verdict: Accepted)

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
  std::vector<int> ary(17);
  unsigned long N;
  int len = 0;
  std::cin >> N;
  for (int i = 0; i < 17; i++) {
    ary[i] = (int) (N % 10);
    N /= 10;
    len++;
    if (N == 0) break;
  }

  int max = 0;
  for (int i = 0; i < len; i++) {
    int sum = 0;
    for (int j = 0; j < len; j++) {
      sum += ary[j];
    }
    max = std::max(max, sum);
    if (ary[i] != 9) {
      ary[i] = 9;
      for (int j = i + 1; j < len; j++) {
        if (ary[j] != 0) {
          ary[j]--;
          break;
        } else ary[j] = 9;
      }
    }
  }

  std::cout << max;

  return 0;
}