1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <cstdio>
#include <algorithm>

using namespace std;

int digits(int val) {
	int result = 0;
	while (val) {
		val /= 10;
		result++;
	}
	return result;
}

int n, pow_ten[11];
long long result;

int main() {
	pow_ten[0] = 1;
	for (int i = 1; i <= 9; i++)
		pow_ten[i] = pow_ten[i-1] * 10;

	int prev, a, zeros = 0, add_val = 0;
	scanf("%d%d", &n, &prev);
	int prev_digits = digits(prev);

	while (--n) {
		scanf("%d", &a);
		int curr_digits = digits(a);

		if (curr_digits > prev_digits) {
			int diff = curr_digits - prev_digits;
			int added = min(diff, zeros);
			prev *= pow_ten[added];
			zeros = max(0, zeros - added);
			diff -= added;
			prev_digits += added;
			if (diff > 0) {
				int d = digits(add_val);
				if (d <= diff) {
					prev = prev * pow_ten[d] + add_val;
					add_val = 0;
					prev_digits += d;
				} else {
					prev = prev * pow_ten[diff] + add_val / pow_ten[d - diff];
					add_val %= pow_ten[d - diff];
					prev_digits = curr_digits;
				}
			}
		}
	
		//printf(" %d %d %d %lld\n", prev, zeros, add_val, result);

		if (curr_digits <= prev_digits) {
			int diff = prev_digits - curr_digits;
			int beg = prev / pow_ten[diff];
			int end = prev % pow_ten[diff];
			//printf("  %d %d\n", curr_digits, prev_digits);
			if (a != beg) {
				zeros = diff + zeros + digits(add_val) + (a < beg ? 1 : 0);
				add_val = 0;
				result += zeros;
				prev = a;
			} else {
				add_val++;
				zeros -= digits(add_val) - digits(add_val-1);
				if (zeros < 0) {
					end++;
					zeros = digits(add_val-1);
					add_val = 0;
				}
				//printf("   %d %d\n", end, zeros);
				result += diff + zeros + digits(add_val);
				if (end == pow_ten[diff]) {
					result++;
					zeros += digits(end);
					prev = beg;
				} else {
					prev = beg * pow_ten[diff] + end;
					curr_digits = prev_digits;
				}
				
			}
		} else {
			prev = a;
		}

		prev_digits = curr_digits;
	}

	printf("%lld\n", result);
}