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 (GCC 5.4.1) (judge verdict: Accepted)

#include "iostream"
#include "vector"
#include "string"
#include "algorithm"
#include "math.h"
#include "cstring"
#include "stack"
#include "queue"

using namespace std;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef vector<vector<int> > mat;

ll sumdigit(ll n)
{
  int check = 0;
  while (n > 0)
  {
    check += (n % 10);
    n /= 10;
  }
  return check;
}

ll power_ll(ll a, int b)
{
  ll x = 1;
  while (b > 0)
  {
    x *= a;
    b--;
  }
  return x;
}

int main()
{
  ll n;
  cin >> n;
  ll ans = sumdigit(n);

  for (int i = 0; i < 20; i++)
  {
    ll num = (n / power_ll(10, i)) * power_ll(10, i) - 1;
    ans = max(ans, sumdigit(num));
  }
  cout << ans << "\n";
}