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: Runtime Error)

#include <bits/stdc++.h>
using namespace std;

typedef long double ld;

int N;
ld X[105], Y[105];
ld tot[105];
const ld TPI = 6.2831853071795864769252868L;
const int ITER = 100000;

int main() {
	scanf("%d", &N);
	for (int i = 0; i < N; ++i) scanf("%Lf%Lf", X+i, Y+i);

	for (int i = 0; i < ITER; ++i) {
		ld R = i;
		R *= TPI;
		R /= ITER;
		ld x = cos(R) * 1e12L;
		ld y = sin(R) * 1e12L;

		ld mn = 1e50L;
		int mni = 0;
		for (int j = 0; j < N; ++j) {
			if ((x-X[j])*(x-X[j]) + (y-Y[j])*(y-Y[j]) < mn) {
				mn = (x-X[j])*(x-X[j]) + (y-Y[j])*(y-Y[j]);
				mni = j;
			}
		}

		tot[mni]++;
	}

	for (int i = 0; i < N; ++i) printf("%.20Lf\n", tot[i] / ITER);
}