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
#include<cstdio>
#include<algorithm>
#include<stack>
using namespace std;
typedef long long ll;

ll t[20];

stack < int > s;

int main(void){
int n;
ll x,licznik,licznik2,a,b,c,d,e,odp =0, liczba=0, liczba2=0,licznik3=0, cyfry=0,cyfry2=0,cyf=0,cyf2=0,lic=0,lic2=0,pom,pom2;
ll h,j,stan;
scanf("%d",&n);
scanf("%lld",&x);
liczba2 = x;
licznik = 0;
t[0]=1;
t[1]=1;
for(int i = 2; i<=17;i++){
    t[i]=t[i-1]*10;
}
while(x>0){
    x/=10;
    licznik++;
}
cyfry2 = licznik;
for(int i =1;i<n;i++){
    scanf("%lld",&x);
    liczba = x;
    stan = 0;
    b = x;
    licznik = 0;
    cyfry = 0;
    while(b > 0){
        licznik++;
        b/=10;
        cyfry++;
    }
    b=liczba2;
    licznik2 = 0;
    while(b > 0){
        licznik2++;
        b/=10;
    }
    pom = liczba2;
    pom2 = liczba;
    ll y=liczba2;
    for(int i =0; i < licznik2-licznik;i++){
        pom/=10;
        //pom2*=10;
    }
    x = lic2;
    licznik3=0;
    while(x>0){
        x/=10;
        licznik3++;
    }
    c = cyf2;
    for(int i =0; i < licznik-licznik2;i++){
            if(c > licznik3){
                h = 0;
            }else{
               // if(lic2 == 0){
              //      h = 0;
                //}else

                h = (lic2/t[c])%10;
                lic2-=h * t[c];
            }
            cyf2--;
            liczba2*=10;
            liczba2+=h;
            cyfry2++;
            pom*=10;
            pom+=h;
            c--;
            c = max(c,(ll)0);
        }
   // pom2 = liczba;
   // while(!s.empty())
    //    s.pop();
   // for(int i =0; i < licznik-licznik2;i++){
   //     s.push(pom2%10);
   //     pom2/=10;
   // }
/*
    stan = 1;
    x = lic2;
        licznik=0;
        while(x>0){
            x/=10;
            licznik++;
        }
        c = cyf2;
        for(int i =0; i < licznik-licznik2;i++){
            if(c > licznik){
                h = 0;
            }else{
                h = (lic2/t[c])%10;
            }if(!s.empty()){
            j = s.top();
            s.pop();}else{
            j = 0;
            }

            c--;
        }
*/
    if(pom > pom2){
        b= max((ll)0,cyfry2-cyfry + cyf2 +1);
        odp += b;
        cyfry2 = cyfry;
        liczba2=liczba;
        lic2 = 0;
        cyf2 = b;
    }else if(pom == pom2){




        lic2++;
        //liczba2=liczba;
       // cyfry2 = cyfry;
        if(lic2/1 > 0 && (lic2-1)/1 == 0){
            c= 1;
        }
        if(lic2/10> 0 && (lic2-1)/10 == 0){
            c= 2;
        }
        if(lic2/100> 0 && (lic2-1)/100 == 0){
            c= 3;
        }
        if(lic2/1000> 0 && (lic2-1)/1000 == 0){
            c= 4;
        }
        if(lic2/10000> 0 && (lic2-1)/10000 == 0){
            c= 5;
        }
        if(lic2/100000> 0 && (lic2-1)/100000 == 0){
            c= 6;
        }
        if(lic2/1000000> 0 && (lic2-1)/1000000 == 0){
            c= 7;
        }
        if(lic2/10000000> 0 && (lic2-1)/10000000 == 0){
            c= 8;
        }
        if(lic2/100000000> 0 && (lic2-1)/100000000 == 0){
            c= 9;
        }
        if(cyf2 <  c){
           d = 10;
           lic2 = 0;
           liczba2++;
           e =0;
           while(liczba2%d == 0){
            d*=10;
            e++;
           }
           if(licznik2 - e<= licznik){
            liczba2 = pom;cyf2++;lic2=0;

           while(liczba2 * 10 <= y)
            liczba2*=10;
           }else{

           }
        }
        b= max((ll)0,cyfry2-cyfry + cyf2);
        odp+=b;
    }else{

        b= max((ll)0,cyfry2-cyfry + cyf2);
        odp += b;
        cyfry2 = cyfry;
        liczba2=liczba;
        lic2 = 0;
        cyf2 = b;
    }
    //printf("%lld %lld %lld %lld %lld %lld %lld %lld\n",odp,liczba,liczba2,cyfry,cyfry2,cyf2,lic,lic2);
}

printf("%lld",odp);






return 0;}