#include <cstdio>
#define MAXN 200100
#define inf 0x7fffffff
int tab[ MAXN ];
int main()
{
int n;
scanf( "%d", &n );
for( int i = 0; i < n; ++i ) scanf ("%d", tab + i );
int pop = inf;
int l = 0;
long long int wynik = 0;
for( int i = n-1; i >= 0; --i )
{
if( tab[ i ] >= pop )
{
long long int a = pop;
long long int temp = 0;
bool started = false;
while( tab[i] >= a )
{
if( started ) a -= 9;
a *= 10;
a += 9;
++temp;
started = true;
}
for( int j = 0; j < 10; ++j )
{
--a;
if( tab[j] >= a )
{
++a;
break;
}
}
wynik += temp * l;
}
++l;
pop = tab[ i ];
}
printf("%lld", wynik );
}
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 | #include <cstdio> #define MAXN 200100 #define inf 0x7fffffff int tab[ MAXN ]; int main() { int n; scanf( "%d", &n ); for( int i = 0; i < n; ++i ) scanf ("%d", tab + i ); int pop = inf; int l = 0; long long int wynik = 0; for( int i = n-1; i >= 0; --i ) { if( tab[ i ] >= pop ) { long long int a = pop; long long int temp = 0; bool started = false; while( tab[i] >= a ) { if( started ) a -= 9; a *= 10; a += 9; ++temp; started = true; } for( int j = 0; j < 10; ++j ) { --a; if( tab[j] >= a ) { ++a; break; } } wynik += temp * l; } ++l; pop = tab[ i ]; } printf("%lld", wynik ); } |
English