Advertisement
Guest User

Untitled

a guest
Feb 8th, 2016
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.36 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main()
  5. {
  6.     char U[20], cont[10];
  7.  
  8.     while(scanf("%s", U) != EOF)
  9.     {
  10.         int size = strlen(U), i, j;
  11.        
  12.         while(1) { //2210102960
  13.             memset(cont, 0, sizeof cont); //zerando o contador
  14.  
  15.             if(U[0] == '0') { //o problema cai em achar um numero menor que 999...
  16.                 size--;
  17.                 for(j = 0; j < size; j++)
  18.                     U[j] = '9';
  19.                 U[j] = '\0';
  20.             }
  21.  
  22.             for(i = 0; i < size; i++) //verificando quantidade de digitos
  23.                 cont[U[i]-'0']++;
  24.  
  25.            
  26.             for(i = 0; i < 10; i++) if(cont[i] > 2) break; 
  27.             if(i == 10) break; //verificando se acabou
  28.  
  29.             for(i = size-1; i >= 0; i--) {
  30.                 if(U[i] == '0' && i >= 1) { // se encontrou 0
  31.                     if(U[i-1] != '0') {
  32.                         cont[U[i]-'0']--;
  33.                         U[i] = '9';
  34.                         cont[U[i]-'0']++;
  35.                         cont[U[i-1]-'0']--;
  36.                         U[i-1] = U[i-1]-1;
  37.                         cont[U[i-1]-'0']++;
  38.                         break;
  39.                     }
  40.                     else {
  41.                         continue;
  42.                     }
  43.                 } else { // se encontrou != 0
  44.                     if(cont[U[i]-'0'] > 2) { // se tem mais de 2 digitos
  45.                         cont[U[i]-'0']--;
  46.                         U[i] = U[i]=='0'?'9':U[i]-1;
  47.                         cont[U[i]-'0']++;
  48.                         break;
  49.                     }
  50.                 }              
  51.             }
  52.            
  53.             /* se eu adicionar essa linha da certo porém da TLE
  54.             while(i < size) {
  55.                 i++;
  56.                 U[i] = '9';
  57.             }
  58.             */
  59.  
  60.             //printf("%s\n", U);
  61.         }
  62.  
  63.         for(int i = 0; i < size; i++)
  64.             printf("%c", U[i]);
  65.         printf("\n");
  66.     }
  67.  
  68.     return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement