#include #include #include #define SIZE 1024 int compare(const void* arg1, const void* arg2) { char* s1 = *((char**)arg1); char* s2 = *((char**)arg2); return strcmp(s1, s2); } int main() { int max_prijatych = 0; if (scanf("%d\n", &max_prijatych) != 1 || max_prijatych <= 0) { puts("Nespravny vstup"); return 0; } char* mena[SIZE]; memset(mena, 0, SIZE * sizeof(char*)); int pocet_mien = 0; char line[SIZE]; while (pocet_mien < SIZE) { memset(line, 0, SIZE); char* r = fgets(line, SIZE, stdin); if (r == NULL) break; int pocet_znakov = strlen(line); if (pocet_znakov <= 1) break; if (line[pocet_znakov - 1] == '\n') { line[pocet_znakov - 1] = '\0'; pocet_znakov--; } int najdene = 0; for (int i = 0; i < pocet_mien; i++) { if (strcmp(mena[i], line) == 0) { najdene = 1; break; } } if (!najdene) { mena[pocet_mien] = malloc(pocet_znakov + 1); strcpy(mena[pocet_mien], line); pocet_mien++; } } if (pocet_mien == 0) { puts("Ziadne prihlasky"); return 0; } qsort(mena, pocet_mien, sizeof(char*), compare); puts("Prijati studenti:"); int prijatych = (max_prijatych < pocet_mien) ? max_prijatych : pocet_mien; for (int i = 0; i < prijatych; i++) { puts(mena[i]); } if (pocet_mien > max_prijatych) { puts("Neprijati studenti:"); for (int i = max_prijatych; i < pocet_mien; i++) { puts(mena[i]); } } for (int i = 0; i < pocet_mien; i++) { free(mena[i]); } return 0; }