#include <iostream> #include<stdio.h> using namespace std; int i,l,x,n,a; bool przes; long long odp; int lng [200100]; short int tab [200100][10]; bool przed; bool Wiekszy () { if (przes==true) { przes=false; for (l=10;l>=1;l--) { if (tab[i][l]>tab[i-1][l-1]) { return true; } if (tab[i][l]<tab[i-1][l-1]) { return false; } } } else { for (l=9;l>=1;l--) { if (tab[i][l]>tab[i-1][l]) { return true; } if (tab[i][l]<tab[i-1][l]) { return false; } } } return false; } int main() { // printf("%lli",sizeof(short)*200100*10/1000000); scanf("%li",&n); for (i=1;i<=n;i++) { x=0; scanf("%i",&a); while (a>0) { x++; tab[i][x]=a%10; a=a/10; lng[i]=x; } for(l=x;l>0;l--) { tab[i][l+9-x]=tab[i][l]; } } odp=0; for (i=2;i<=n;i++) { if (lng[i-1]>lng[i]) { odp+=lng[i-1]-lng[i]; lng[i]=lng[i-1]; } if (lng[i]==lng[i-1]) { if (Wiekszy()==false) { odp++; //przes=true; lng[i]++; //printf("%i %i\n",lng[i],tab[i][9]); } } } printf("%lli",odp); 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 | #include <iostream> #include<stdio.h> using namespace std; int i,l,x,n,a; bool przes; long long odp; int lng [200100]; short int tab [200100][10]; bool przed; bool Wiekszy () { if (przes==true) { przes=false; for (l=10;l>=1;l--) { if (tab[i][l]>tab[i-1][l-1]) { return true; } if (tab[i][l]<tab[i-1][l-1]) { return false; } } } else { for (l=9;l>=1;l--) { if (tab[i][l]>tab[i-1][l]) { return true; } if (tab[i][l]<tab[i-1][l]) { return false; } } } return false; } int main() { // printf("%lli",sizeof(short)*200100*10/1000000); scanf("%li",&n); for (i=1;i<=n;i++) { x=0; scanf("%i",&a); while (a>0) { x++; tab[i][x]=a%10; a=a/10; lng[i]=x; } for(l=x;l>0;l--) { tab[i][l+9-x]=tab[i][l]; } } odp=0; for (i=2;i<=n;i++) { if (lng[i-1]>lng[i]) { odp+=lng[i-1]-lng[i]; lng[i]=lng[i-1]; } if (lng[i]==lng[i-1]) { if (Wiekszy()==false) { odp++; //przes=true; lng[i]++; //printf("%i %i\n",lng[i],tab[i][9]); } } } printf("%lli",odp); return 0; } |