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
#include <cstdio>
#include <cstring>
#include <algorithm>
int n, i=1, roz2=0, pom,roz,ok,ile;
long long a, b,il,wyn;
char s[20], s2[20],znak;
bool czy;
int main()
{
	scanf("%d", &n);
	while(b<(long long)1000000000000000&&i<=n)
	{
		scanf("%s", s);
		roz=std::strlen(s); pom=roz;
		a=atoi(s);
		while(a<=b)
		{
			a*=10;
			a+=9;
			s[roz]='9';
			roz++;
		}
		b=0;
		if(roz>roz2)
		{
			for(int j=0; j<pom; j++)
			{
				b*=10; b+=s[j]-'0'; s2[j]=s[j];
			}
			for(int j=pom; j<roz; j++)
			{
				b*=10; s2[j]='0';
			}
		}
		else
		{
			czy=false;
			for(int j=0; j<pom; j++)
			{
				if(s[j]>s2[j])czy=true;
			    b*=10; b+=s[j]-'0'; s2[j]=s[j];	
			}
			if(!czy)
				for(int j=roz-1; j>=pom; j--)
				{
						if(s2[j]<'9')
						{
							czy=true;
							s2[j]++;
							break;
						}
						else s2[j]='0';
				}
			else
				for(int j=roz-1; j>=pom; j--)s2[j]='0';
			for(int j=pom; j<roz; j++)
			{
				b*=10;
				b+=s2[j]-'0';
			}
		}
		roz2=roz;
		wyn+=roz-pom;
		i++;
	}
	ile=roz2;
	while(i<=n)
	{
		scanf("%s", s);
		roz=std::strlen(s); ok=0; pom=roz;
		for(int j=0; j<roz; j++)
		{
			if(s[j]>s2[j])
			{
			   ok=1;
			   break;	
			}	
			if(s[j]<s2[j])
			{
				ok=-1;
				break;
			}
		}
		if(ok==1)
			while(roz<=10)s[roz++]='0';
		if(ok==-1)
		{
			ile++;
			while(roz<=10)s[roz++]='0';
		}
		if(ok==0)
			while(roz<=10)
			{
				s[roz]=s2[roz];
				roz++;
			}
		wyn+=ile-pom;
		for(int j=0; j<=10; j++)s2[j]=s[j];
		i++;
	}
	printf("%lld", wyn);
}