#include <iostream> #include <cmath> using namespace std; int tab[200000]; int ile(int liczba, int r) { int k=0; while(liczba!=0 || k==r) { liczba/=10; ++k; } // cout<<"ile: "<<k<<endl; return k; } bool por(int liczba,int liczba2, int r, int d2) { bool stan=0; int t=r-d2; int p=pow(10,t); liczba2%=p; if(liczba==liczba2){stan=1;} return stan; } int main() { ios_base::sync_with_stdio(0); int ilosc, wynik=0, d1=0, d2=0, maks=0; cin>>ilosc; for(int i=1;i<=ilosc;++i) { cin>>tab[i]; // cout<<"TERAZ"<<endl; d2=ile(tab[i], -1); d1=ile(tab[i-1],-1); // cout<<"koniec"<<endl; if(d2>maks){maks=d2;} if(tab[i]==tab[i-1]){tab[i]*=10;d2=ile(tab[i], -1);wynik++;if(d2>maks){maks=d2;} } if(tab[i]<tab[i-1]) { bool spr=0; if(d1==d2 && spr==0){spr=1;tab[i]*=10;wynik++;if(d2+1>maks){maks=d2+1;}} if(d2<maks && spr==0) { // cout<<"drugi"<<endl; spr=1; int temp=tab[i-1]+1; if(por(tab[i], temp, maks, d2)==1){wynik+=maks-d2;tab[i]=temp;} else{int t=maks-d2+1;tab[i]*=pow(10,t);wynik+=t;/*cout<<"UPS: "<<tab[i]<<" pot: "<<t<<endl*/;d2=ile(tab[i],-1);if(d2>maks){maks=d2;}} } } } cout<<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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | #include <iostream> #include <cmath> using namespace std; int tab[200000]; int ile(int liczba, int r) { int k=0; while(liczba!=0 || k==r) { liczba/=10; ++k; } // cout<<"ile: "<<k<<endl; return k; } bool por(int liczba,int liczba2, int r, int d2) { bool stan=0; int t=r-d2; int p=pow(10,t); liczba2%=p; if(liczba==liczba2){stan=1;} return stan; } int main() { ios_base::sync_with_stdio(0); int ilosc, wynik=0, d1=0, d2=0, maks=0; cin>>ilosc; for(int i=1;i<=ilosc;++i) { cin>>tab[i]; // cout<<"TERAZ"<<endl; d2=ile(tab[i], -1); d1=ile(tab[i-1],-1); // cout<<"koniec"<<endl; if(d2>maks){maks=d2;} if(tab[i]==tab[i-1]){tab[i]*=10;d2=ile(tab[i], -1);wynik++;if(d2>maks){maks=d2;} } if(tab[i]<tab[i-1]) { bool spr=0; if(d1==d2 && spr==0){spr=1;tab[i]*=10;wynik++;if(d2+1>maks){maks=d2+1;}} if(d2<maks && spr==0) { // cout<<"drugi"<<endl; spr=1; int temp=tab[i-1]+1; if(por(tab[i], temp, maks, d2)==1){wynik+=maks-d2;tab[i]=temp;} else{int t=maks-d2+1;tab[i]*=pow(10,t);wynik+=t;/*cout<<"UPS: "<<tab[i]<<" pot: "<<t<<endl*/;d2=ile(tab[i],-1);if(d2>maks){maks=d2;}} } } } cout<<wynik; } |