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
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;

int n;
long long wyn;
char *cur,*lst;

int main()
{
	cur=new char[300000];
	lst=new char[300000];
	for(int i=0;i<300000;i++)cur[i]=lst[i]=0;
	scanf("%d",&n);
	int ll=0;
	for(int i=0;i<n;i++)
	{
		swap(cur,lst);
		scanf("%s",cur);
		int x=strlen(cur);
		int y=ll;
		if(x>y)
		{
			ll=x;
	 	    continue;
	    }
		
		int pos=0;
		while(pos<x&&cur[pos]==lst[pos])pos++;
		if(pos==x)
		{
		    swap(cur,lst);
			wyn+=y-x;
			ll=y;
			int prz=1;
			for(int j=y-1;j>=x;j--)
			{
	 		    cur[j]+=prz;
   	 		 	prz--;
	 		    if(cur[j]>'9')cur[j]='0',prz++;
	 		    else break;
	 		}
	 		if(prz==1)
		  	{
		  		ll++;wyn++;
		  		cur[y]='0';
		  	}
		}
		else
		{	
			if(cur[pos]>lst[pos])
			{
				swap(cur,lst);
				wyn+=y-x;
				for(int j=0;j<x;j++)cur[j]=lst[j];
			    for(int j=x;j<min(y,100);j++)cur[j]='0';
			    ll=y;
			}
			else
			{
				swap(cur,lst);
				wyn+=y-x+1;
				for(int j=0;j<x;j++)cur[j]=lst[j];
				for(int j=x;j<=min(y,100);j++)cur[j]='0';
				cur[y]='0';
				ll=y+1;
			}
		}
	}
	printf("%lld",wyn);
}