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
93
94
95
96
97
98
99
#include<bits/stdc++.h>
using namespace std;

const long long INF=1e17;
int t[31];
int kon[31];

int main()
{
    int z;
    char c;
    long long wyn=0,akt=0,licz,ile;
    bool b;
    scanf ("%d", &z);
    c=getchar();
    while (z--)
    {
        //printf ("%lld\n", wyn);
        //printf ("%lld %lld\n", akt, wyn);
        ile=0;
        licz=11;
        b=false;
        c=getchar();
        while (c>='0'&&c<='9')
        {
            licz--;
            ile++;
            t[licz]=int(c)-48;
            c=getchar();
        }
        for (int i=1; i<=5; i++)
            swap(t[i],t[10-i+1]);
        if (ile>akt)
        {
            for (int i=1; i<=ile; i++)
                kon[i]=t[i];
            akt=ile;
            continue;
        }
        for (int i=1; i<=ile; i++)
        {
            if (t[i]>kon[i])
            {
                wyn+=akt-ile;
                for (int j=i; j<=ile; j++)
                    kon[j]=t[j];
                for (int j=ile+1; j<17; j++)
                    kon[j]=0;
                b=true;
                break;
            }
            if (t[i]<kon[i])
            {
                akt++;
                wyn+=akt-ile;
                for (int j=i; j<=ile; j++)
                    kon[j]=t[j];
                for (int j=ile+1; j<=akt; j++)
                    kon[j]=0;
                b=true;
                break;
            }
        }
        if (b)
            continue;
        if (akt>16)
        {
            wyn+=akt-ile;
            continue;
        }
        if (ile!=akt)
            kon[akt]++;
        for (int i=akt; i>ile; i--)
        {
            if (kon[i]>9&&i!=ile+1)
            {
                kon[i]=0;
                kon[i-1]++;
            }
            else if (kon[i]<=9)
            {
                b=true;
                break;
            }
        }
        if (b)
        {
            wyn+=akt-ile;
            continue;
        }
        akt++;
        for (int i=ile+1; i<=akt; i++)
            kon[i]=0;
        wyn+=akt-ile;
    }
    //printf ("%lld ", akt);
    printf ("%lld", wyn);
    return 0;
}