#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; } |
English