Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- char U[20], cont[10];
- while(scanf("%s", U) != EOF)
- {
- int size = strlen(U), i, j;
- while(1) { //2210102960
- memset(cont, 0, sizeof cont); //zerando o contador
- if(U[0] == '0') { //o problema cai em achar um numero menor que 999...
- size--;
- for(j = 0; j < size; j++)
- U[j] = '9';
- U[j] = '\0';
- }
- for(i = 0; i < size; i++) //verificando quantidade de digitos
- cont[U[i]-'0']++;
- for(i = 0; i < 10; i++) if(cont[i] > 2) break;
- if(i == 10) break; //verificando se acabou
- for(i = size-1; i >= 0; i--) {
- if(U[i] == '0' && i >= 1) { // se encontrou 0
- if(U[i-1] != '0') {
- cont[U[i]-'0']--;
- U[i] = '9';
- cont[U[i]-'0']++;
- cont[U[i-1]-'0']--;
- U[i-1] = U[i-1]-1;
- cont[U[i-1]-'0']++;
- break;
- }
- else {
- continue;
- }
- } else { // se encontrou != 0
- if(cont[U[i]-'0'] > 2) { // se tem mais de 2 digitos
- cont[U[i]-'0']--;
- U[i] = U[i]=='0'?'9':U[i]-1;
- cont[U[i]-'0']++;
- break;
- }
- }
- }
- /* se eu adicionar essa linha da certo porém da TLE
- while(i < size) {
- i++;
- U[i] = '9';
- }
- */
- //printf("%s\n", U);
- }
- for(int i = 0; i < size; i++)
- printf("%c", U[i]);
- printf("\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement