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: Wrong Answer)

#include <bits/stdc++.h>

#define vec(v) vector<int>(v)
#define be(v) (v).begin(), (v).end()
#define pb(q) push_back(q)
#define mapci(mp) map<char*,int>(mp)
#define mapcc(mp) map<char*,char*>(mp)
typedef long long ll;
using namespace std;

int main() {
    cin.tie(0);
    ios::sync_with_stdio(false);
    string s;
    cin>>s;
    int n=s.length(),num=0,ans;
    for(int i=0;i<n;i++){
        if(s[i]==9){
            num++;
        }
    }
    if(num==n){
        ans=9*n;
    }
    else{
        if(s[0]-'0'==1){
            if(num==n-1){
                ans=num*9+1;
            }
            else{
                ans=(n-1)*9;
            }
        }
        else{
            if(num==n-1&&s[0]-'0'!=9){
                ans=s[0]-'0'+9*num;
            }
            else{
                ans=s[0]-'0'-1+9*(n-1);
            }
        }
    }
    cout <<ans<<endl;
    return 0;
}