#include #include #include int compare_names(const void *a, const void *b) { return strcmp(*(const char **)a, *(const char **)b); } int main() { int count; char buffer[100]; char **applications; int i, j; if (scanf("%d", &count) != 1 || count <= 0) { printf("Nespravny vstup\n"); return 1; } applications = (char **)malloc(count * sizeof(char *)); if (!applications) { printf("Chyba pri alokacii pamate\n"); return 1; } i = 0; while (fgets(buffer, sizeof(buffer), stdin)) { if (buffer[0] == '\n' || i >= count) { // End of input or reached maximum count break; } int len = strlen(buffer); if (len > 0 && buffer[len - 1] == '\n') { // Remove newline character if present buffer[len - 1] = '\0'; } int found = 0; for (j = 0; j < i; j++) { if (strcmp(applications[j], buffer) == 0) { found = 1; break; } } if (!found) { applications[i] = strdup(buffer); i++; } } if (i == 0) { printf("Ziadne prihlasky\n"); return 1; } // Sort the applications alphabetically qsort(applications, i, sizeof(char *), compare_names); printf("Prijati studenti:\n"); for (j = 0; j < i; j++) { printf("%s\n", applications[j]); } if (count < i) { printf("Neprijati studenti:\n"); for (; j < i; j++) { printf("%s\n", applications[j]); } } // Free allocated memory for (j = 0; j < i; j++) { free(applications[j]); } free(applications); return 0; }