#include <iostream> #include <string> using namespace std; long long zera[2], val[2], result; int main() {ios_base::sync_with_stdio(0); cin.tie(0); int n; cin>>n; for(int i = 0; i<n; i++){ int p = (i+1)%2; int t = i%2; cin>>val[t]; if(val[t]>val[p]){ continue; } if(val[t]==val[p]){ val[t]*=10; result++; continue; } string pop = to_string(val[p]); string ter = to_string(val[t]); string pref_pop = pop.substr(0, ter.size()); int razy = pop.size()-ter.size(); if(ter.compare(pref_pop)>0){ ter.append(razy, '0'); val[t] = stoll(ter); zera[t] = zera[p]; result+=razy+zera[t]; continue; } if(ter.compare(pref_pop)<0){ if(pop.size()<17){ ter.append(razy+1, '0'); val[t] = stoll(ter); result+=razy+1; continue; } ter.append(razy, '0'); val[t] = stoll(ter); zera[t] = zera[p]+1; result+=razy+zera[t]; continue; } string next = to_string(val[p]+1); string pref_next = next.substr(0, ter.size()); if(pref_next.compare(ter)!=0){ ter.append(razy+1, '0'); val[t] = stoll(ter); result+=razy+1; continue; } ter.assign(next); zera[t] = zera[p]; val[t] = stoll(ter); result+=razy+zera[t]; } cout<<result; 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 | #include <iostream> #include <string> using namespace std; long long zera[2], val[2], result; int main() {ios_base::sync_with_stdio(0); cin.tie(0); int n; cin>>n; for(int i = 0; i<n; i++){ int p = (i+1)%2; int t = i%2; cin>>val[t]; if(val[t]>val[p]){ continue; } if(val[t]==val[p]){ val[t]*=10; result++; continue; } string pop = to_string(val[p]); string ter = to_string(val[t]); string pref_pop = pop.substr(0, ter.size()); int razy = pop.size()-ter.size(); if(ter.compare(pref_pop)>0){ ter.append(razy, '0'); val[t] = stoll(ter); zera[t] = zera[p]; result+=razy+zera[t]; continue; } if(ter.compare(pref_pop)<0){ if(pop.size()<17){ ter.append(razy+1, '0'); val[t] = stoll(ter); result+=razy+1; continue; } ter.append(razy, '0'); val[t] = stoll(ter); zera[t] = zera[p]+1; result+=razy+zera[t]; continue; } string next = to_string(val[p]+1); string pref_next = next.substr(0, ter.size()); if(pref_next.compare(ter)!=0){ ter.append(razy+1, '0'); val[t] = stoll(ter); result+=razy+1; continue; } ter.assign(next); zera[t] = zera[p]; val[t] = stoll(ter); result+=razy+zera[t]; } cout<<result; return 0; } |