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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
#include <bits/stdc++.h>

using namespace std;

long long n, m=15, h;
long long t[200001];
long long d[200001];
long long k[200001];
long long l[200001];
long long p[200001];
long long w;

int xd(int a)
{
    int g=0;
    while(a>9)
    {
        ++g;
        a/=10;
    }
    return g;
}

long long ma(long long xdd, long long xxd)
{
    if(xxd>xdd)
    {
        return xxd;
    }
    return xdd;
}

long long mi(long long xdd, long long xxd)
{
    if(xxd<xdd)
    {
        return xxd;
    }
    return xdd;
}

long long p10(long long a)
{
    long long b=1;
    while(a>0)
    {
        b*=10;
        --a;
    }
    return b;
}

int main()
{
    scanf("%lld", &n);
    for(int i=1; i<=n; ++i)
    {
        scanf("%lld", &t[i]);
        p[i]=t[i];
        if(m>xd(t[i]))
        {
            m=xd(t[i]);
        }
    }
    for(int i=1; i<=n; ++i)
    {
        h=1;
        while(xd(t[i])>m)
        {
            ++d[i];
            l[i]+=t[i]%10*h;
            h*=10;
            t[i]/=10;
        }

    }
    //printf("%lld %lld %lld %lld %lld\n", p[1], t[1], d[1], l[1], k[1]);
    for(int i=2; i<=n; ++i)
    {
        if(t[i]>t[i-1])
        {
            if(d[i]<d[i-1]+k[i-1])
            {
                k[i]=d[i-1]+k[i-1]-d[i];
                l[i]=0;
                w+=k[i];
            }
        }
        else
        {
            if(t[i]<t[i-1])
            {
                if(d[i]<=d[i-1]+k[i-1])
                {
                    k[i]=d[i-1]+k[i-1]-d[i]+1;
                    l[i]=0;
                    w+=k[i];
                }
            }
            else
            {
                if(d[i]<d[i-1]+k[i-1])
                {
                    if(k[i-1]==0)
                    {
                        if(xd(l[i-1]+1)==d[i-1])
                        {
                            k[i]=d[i-1]-d[i]+1;
                            w+=k[i];
                        }
                        else
                        {
                            k[i]=d[i-1]-d[i];
                            l[i]=l[i-1]+1;
                            w+=k[i];
                        }
                    }
                    else
                    {
                        if(d[i]<d[i-1])
                        {
                            if(p[i]>p[i-1]/p10(d[i-1]-d[i]))
                            {
                                k[i]=d[i-1]+k[i-1]-d[i];
                                w+=k[i];
                                l[i]=0;
                            }
                            else
                            {
                                if(xd(p[i-1]%p10(d[i-1]-d[i])+1)==d[i-1]-d[i])
                                {
                                    if(xd(l[i-1]+1)==k[i-1])
                                    {
                                        k[i]=d[i-1]+k[i-1]-d[i]+1;
                                        w+=k[i];
                                        l[i]=0;
                                    }
                                    else
                                    {
                                        k[i]=d[i-1]+k[i-1]-d[i];
                                        w+=k[i];
                                        l[i]=l[i-1]+1;
                                    }
                                }
                                else
                                {
                                    k[i]=d[i-1]+k[i-1]-d[i];
                                    w+=k[i];
                                    l[i]=0;
                                }
                            }
                        }
                        else
                        {
                            if(d[i]==d[i-1])
                            {
                                if(p[i]>p[i-1])
                                {
                                    k[i]=k[i-1];
                                    l[i]=0;
                                    w+=k[i];
                                }
                                else
                                {
                                    if(p[i]<p[i-1])
                                    {
                                        k[i]=k[i-1]+1;
                                        l[i]=0;
                                        w+=k[i];
                                    }
                                    else
                                    {
                                        if(xd(l[i-1]+1)==k[i-1])
                                        {
                                            k[i]=k[i-1]+1;
                                            l[i]=0;
                                            w+=k[i];
                                        }
                                        else
                                        {
                                            k[i]=k[i-1];
                                            l[i]=l[i-1]+1;
                                            w+=k[i];
                                        }
                                    }
                                }
                            }
                            else
                            {
                                if(p[i]/p10(d[i]-d[i-1])>p[i-1])
                                {
                                    k[i]=d[i-1]+k[i-1]-d[i];
                                    w+=k[i];
                                    l[i]=0;
                                }
                                else
                                {
                                    if(p[i]/p10(d[i]-d[i-1])==p[i-1])
                                    {
                                        if(p[i]%p10(d[i]-d[i-1])>l[i-1]/p10(d[i-1]+k[i-1]-d[i-1]))
                                        {
                                            k[i]=d[i-1]+k[i-1]-d[i];
                                            w+=k[i];
                                            l[i]=0;
                                        }
                                        else
                                        {
                                            if(p[i]%p10(d[i]-d[i-1])<l[i-1]/p10(d[i-1]+k[i-1]-d[i-1]))
                                            {
                                                k[i]=d[i-1]+k[i-1]-d[i]+1;
                                                w+=k[i];
                                                l[i]=0;
                                            }
                                            else
                                            {
                                                if(xd(l[i-1]%p10(d[i-1]+k[i-1]-d[i])+1)==d[i-1]+k[i-1]-d[i])
                                                {
                                                    k[i]=d[i-1]+k[i-1]-d[i]+1;
                                                    w+=k[i];
                                                    l[i]=0;
                                                }
                                                else
                                                {
                                                    k[i]=d[i-1]+k[i-1]-d[i];
                                                    w+=k[i];
                                                    l[i]=l[i-1]%p10(d[i-1]+k[i-1]-d[i])+1;
                                                }
                                            }
                                        }
                                    }
                                    else
                                    {
                                        k[i]=d[i-1]+k[i-1]-d[i]+1;
                                        w+=k[i];
                                        l[i]=0;
                                    }
                                }
                            }
                        }
                    }
                }
                else
                {
                    if(d[i]==d[i-1]+k[i-1])
                    {
                        if(k[i-1]==0)
                        {
                            if(p[i]<=p[i-1])
                            {
                                k[i]=1;
                                ++w;
                                l[i]=0;
                            }
                        }
                        else
                        {
                            if(p[i]<=p[i-1]*p10(k[i-1])+l[i-1])
                            {
                                if(xd(l[i-1]+1)==k[i-1])
                                {
                                    k[i]=k[i-1]+1;
                                    w+=k[i];
                                    l[i]=0;
                                }
                                else
                                {
                                    k[i]=k[i-1];
                                    w+=k[i];
                                    l[i]=l[i-1]+1;
                                }
                            }
                        }
                    }
                }
            }
        }
        //printf("%lld %lld %lld %lld %lld\n", p[i], t[i], d[i], l[i], k[i]);
    }
    printf("%lld\n", w);
    return 0;
}