#include <iostream>
using namespace std;
int n,d,dlug_ost,delta_dlug;
long long m,w,roznica;
int dl[200007];
long long t[200007],p[17];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin>>n;
p[0]=1;
for (int i=1; i<17; i++)
{
p[i]=p[i-1]*10;
}
for (int i=0; i<n; i++)
{
cin>>t[i];
d=1;
m=10;
while ((long long)t[i]/m)
{
m*=10;
d++;
}
dl[i]=d;
//cout<<dl[i]<<" ";
}
dlug_ost=dl[0];
int i=1;
while ((dlug_ost<16)&&(i<n))
{
//cout<<i<<") ";
delta_dlug=dlug_ost-dl[i];
if (delta_dlug<0)
{
//cout<<"A\n";
dlug_ost=dl[i];
i++;
continue;
}
else if (delta_dlug==0)
{
if (t[i]<=t[i-1])
{
w++;
t[i]*=10;
dlug_ost++;
i++;
//cout<<"X"<<w<<"\n";
continue;
}
}
t[i]*=p[delta_dlug];
roznica=t[i]-t[i-1];
//cout<<"D ";
if (roznica>0)
{
//cout<<"a ";
w+=delta_dlug;
}
else
{
//cout<<roznica<<" "<<delta_dlug<<" ";
roznica*=-1;
if (roznica<p[delta_dlug]-1)
{
//cout<<"c ";
w+=delta_dlug;
t[i]+=roznica+1;
}
else
{
//cout<<"b ";
w+=delta_dlug+1;
dlug_ost++;
t[i]*=10;
}
}
//cout<<w<<"\n";
i++;
}
while (i<n)
{
delta_dlug=dlug_ost-dl[i];
t[i]*=p[16-dl[i]];
roznica=t[i]-t[i-1];
//cout<<"D ";
if (roznica>=0)
{
//cout<<"a ";
w+=delta_dlug;
}
else
{
//cout<<roznica<<" "<<delta_dlug<<" ";
w+=delta_dlug+1;
dlug_ost++;
}
i++;
}
cout<<w;
/*cout<<"\n";
for (int i=0; i<n; i++)
cout<<t[i]<<" ";*/
return 0;
}
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 | #include <iostream> using namespace std; int n,d,dlug_ost,delta_dlug; long long m,w,roznica; int dl[200007]; long long t[200007],p[17]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin>>n; p[0]=1; for (int i=1; i<17; i++) { p[i]=p[i-1]*10; } for (int i=0; i<n; i++) { cin>>t[i]; d=1; m=10; while ((long long)t[i]/m) { m*=10; d++; } dl[i]=d; //cout<<dl[i]<<" "; } dlug_ost=dl[0]; int i=1; while ((dlug_ost<16)&&(i<n)) { //cout<<i<<") "; delta_dlug=dlug_ost-dl[i]; if (delta_dlug<0) { //cout<<"A\n"; dlug_ost=dl[i]; i++; continue; } else if (delta_dlug==0) { if (t[i]<=t[i-1]) { w++; t[i]*=10; dlug_ost++; i++; //cout<<"X"<<w<<"\n"; continue; } } t[i]*=p[delta_dlug]; roznica=t[i]-t[i-1]; //cout<<"D "; if (roznica>0) { //cout<<"a "; w+=delta_dlug; } else { //cout<<roznica<<" "<<delta_dlug<<" "; roznica*=-1; if (roznica<p[delta_dlug]-1) { //cout<<"c "; w+=delta_dlug; t[i]+=roznica+1; } else { //cout<<"b "; w+=delta_dlug+1; dlug_ost++; t[i]*=10; } } //cout<<w<<"\n"; i++; } while (i<n) { delta_dlug=dlug_ost-dl[i]; t[i]*=p[16-dl[i]]; roznica=t[i]-t[i-1]; //cout<<"D "; if (roznica>=0) { //cout<<"a "; w+=delta_dlug; } else { //cout<<roznica<<" "<<delta_dlug<<" "; w+=delta_dlug+1; dlug_ost++; } i++; } cout<<w; /*cout<<"\n"; for (int i=0; i<n; i++) cout<<t[i]<<" ";*/ return 0; } |
English