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
#include<cstdio>

typedef long long ull;

static const ull pot[] = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000};

int main(){
    int n;
    scanf("%i", &n);

    ull pop = 0;
    ull ld = 0;
    ull r = 0;
    ull licznik = 0;

    for(int i = 0; i < n; ++i){
        ull a;
        scanf("%lli", &a);

        ull dod = 0;
        while(a + pot[dod] - 1 < pop && a < pot[9]){
            a*= 10;
            ++dod;
        }

        //printf("dod = %lli\na = %lli\npop = %lli\nld = %lli\n", dod, a, pop, ld);

        if(a > pop){
            r = 0;
        }
        else if(a + pot[dod] - 1 < pop){
            ld = ld + 1;
            r = 0;
        }
        else{
            if(a + pot[dod] - 1 == pop){
                if(ld < 10 && r == pot[ld] - 1){
                    r = 0;
                    ld = ld + 1;
                }
                else{
                    a = a + pot[dod] - 1;
                    ++r;
                }
            }
            else{
                if(ld < 10 && r == pot[ld] - 1){
                    r = 0;
                    a = pop + 1;
                }
                else{
                    a = pop;
                    ++r;
                }
            }
        }

        licznik += ld + dod;
        pop = a;

        while(pop < pot[9] && ld){
            --ld;
            pop *= 10;
        }

        if(ld < 10){
            pop += r / pot[ld];
            r%= pot[ld];
        }

        //printf("%lli\n", pop * pot[ld] + r);
    }

    printf("%lli\n", licznik);
}