Submission

Status:

[PPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: wasupum

Problemset: เรียงสตริง

Language: c

Time: 0.002 second

Submitted On: 2025-10-03 01:06:21

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char* Heap(){
    size_t size = 0 , capacity = 16;
    char* str = malloc(capacity * sizeof(char));
    if(!str)return NULL;
    int c;
    
    while((c = getchar()) != '\n' && c != EOF){
        if(size + 1 >= capacity){
            capacity *= 2;
            char* temp = realloc(str,capacity);
            if(!temp){
                free(str);
                return NULL;
            }
            str = temp;
        }
        str[size++] = (char)c;
        str[size] = '\0';
    }
    return str;
}

void SelectionSort(char* str,size_t len){
    for(int i = 0 ; i < len-1 ; i++){
        int min = i;
        for(int j = i+1 ; j < len ; j++){
            if(str[min]>str[j]){
                min = j;
            }
        }
        char temp = str[min];
        str[min] = str[i];
        str[i] = temp;
    }
}

void Printstr(char* str,size_t len){
    char last = '\0';
    for(int i = 0 ; i < len ; i++){
        if(str[i] != last){
            printf("%c ",str[i]);
        }
        last = str[i];
    }
}

int main(void){
    char* str = Heap();
    size_t len;
    if(!str)return 1;
    len = strlen(str);
    
    SelectionSort(str,len);
    Printstr(str,len);

    free(str);
    str = NULL;
    return 0;
}