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
#include <cstdio>
#include <vector>
#include <string>
#include <iostream>

int main() {
    int gamesNumber;
    long long int numberOfChanges = 0;
    scanf("%d\n", &gamesNumber);

    int counter = 1;
    std::string lastGamePrice;
    std::getline (std::cin, lastGamePrice);
    while (counter < gamesNumber) {
        counter++;
        std::string currentGamePrice;
        std::getline (std::cin, currentGamePrice);
        int missingDigits = 0;
        int lastLength = lastGamePrice.length();
        int currentLength = currentGamePrice.length();
        if (currentLength <= lastLength) {
            missingDigits += (lastLength - currentLength);
            int comparedIndex = 0;
            while (comparedIndex < currentLength && lastGamePrice[comparedIndex] == currentGamePrice[comparedIndex]) {
                comparedIndex++;
            }
            if (comparedIndex < currentLength && (lastGamePrice[comparedIndex] > currentGamePrice[comparedIndex])) {
                missingDigits += 1;
                currentGamePrice.insert(currentGamePrice.end(), missingDigits, '0');
            }
            else if (comparedIndex == currentLength) {
                bool isAllNineEnd = true;
                if (comparedIndex == lastLength) {
                    missingDigits += 1;
                    currentGamePrice.insert(currentGamePrice.end(), missingDigits, '0');
                } else {
                    std::vector<char> digitsToAdd;
                    while (comparedIndex < lastLength) {
                        char currentDigit = lastGamePrice[comparedIndex];
                        comparedIndex++;
                        isAllNineEnd = isAllNineEnd && currentDigit == '9';
                        if (currentDigit != '9') {
                            currentDigit++;
                        }
                        digitsToAdd.push_back(currentDigit);
                    }
                    if (isAllNineEnd) {
                        missingDigits += 1;
                        currentGamePrice.insert(currentGamePrice.end(), missingDigits, '0');
                    } else {
                        currentGamePrice.insert(currentGamePrice.end(), digitsToAdd.begin(), digitsToAdd.end());
                    }
                }
            } else {
                currentGamePrice.insert(currentGamePrice.end(), missingDigits, '0');
            }
        }
        numberOfChanges += missingDigits;
        lastGamePrice = currentGamePrice;
    }
    printf("%llu\n", numberOfChanges);
    return 0;
}