#define MAP_SIZE 2048 int cmpvalue(const void *a, const void *b) { return *(int *)b - *(int *)a; } bool uniqueOccurrences(int* arr, int arrSize){ int *map = calloc(MAP_SIZE, sizeof(int)); int i; for(i = 0; i < arrSize; i++) { if (arr[i] < 0) map[arr[i] + MAP_SIZE/2] += 1; else map[arr[i]] += 1; } /* number of occurrences is sorted by decreasing order Ex: 3 2 1 0 0 0 0 */ qsort(map, MAP_SIZE, sizeof(int), cmpvalue); i = 0; while(map[i]) { if(map[i] == map[i+1]) return 0; i++; } return 1; }