Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- using namespace std;
- ifstream cin("unific.in");
- ofstream cout("unific.out");
- int cnt;
- #define N_MAX 100000
- long long v[N_MAX];
- #define CIF_MAX 10
- int cif[CIF_MAX],cif2[CIF_MAX];
- int cer1[CIF_MAX],aux[CIF_MAX];
- long long nr_cif_dif(int a){
- int i;
- long long nr=0;
- nr=0;
- while(a>0){
- nr=nr*10+a%10;
- a/=10;
- }
- a=nr;
- nr=0;
- while(a>0){
- if(cif[a%10]==0 && aux[a%10]==0){
- nr=nr*10+a%10;
- cnt++;
- }
- cif[a%10]=1;
- a/=10;
- }
- for(i=0;i<CIF_MAX;i++)
- cif[i]=0;
- return nr;
- }
- bool verificare(long long a , long long b){
- int i,stg;
- while(a>0){
- cif[a%10]++;
- a/=10;
- }
- while(b>0){
- cif2[b%10]++;
- b/=10;
- }
- stg=0;
- for(i=0;i<CIF_MAX;i++){
- if(cif[i]>0 && cif2[i]>0){
- stg=1;
- aux[i]=1;
- }
- cif[i]=cif2[i]=0;
- }
- return stg;
- }
- long long calc_put(long long b){
- long long put=1;
- while(b>0){
- put*=10;
- b/=10;
- }
- return put;
- }
- int main()
- {
- int n,i,max1,n2,j
- ;
- long long a,b;
- cin>>n;
- n2=n;
- n=max1=0;
- for(i=0;i<n2;i++){
- cin>>v[n];
- n++;
- ///cer 1
- a=v[n];
- while(a>0){
- cer1[a%10]++;
- max1=max(cer1[a%10],max1);
- a/=10;
- }
- ///cer 2
- while(n>0 &&((v[n-1]==0 && v[n-2]==0) || (verificare(v[n-1],v[n-2])==1))){
- cnt=0;
- a=nr_cif_dif(v[n-2]);
- b=nr_cif_dif(v[n-1]);
- a=a*calc_put(b)+b;
- if(cnt>0)
- n-=2;
- else{
- v[n-2]=a;
- n--;
- }
- for(j=0;j<CIF_MAX;j++)
- aux[j]=0;
- }
- }
- ///cer 1
- i=0;
- while(cer1[i]!=max1)
- i++;
- cout<<i;
- ///cer 2
- cout<<"\n"<<n<<"\n";
- for(i=0;i<n;i++){
- cout<<v[i]<<" ";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement