#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; }
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; } |