#include <stdio.h>
#include <string.h>
#define MAXVAL 50
unsigned int CountDistinctsElements(unsigned int* iArray, unsigned int iNbElem) {
unsigned int ret = 0;
//this array will contains the count of each value
//for example, c[3] will contain the count of the value 3 in your original array
unsigned int c[MAXVAL];
memset(c, 0, MAXVAL*sizeof(unsigned int));
for (unsigned int i=0; i<iNbElem; i++) {
unsigned int elem = iArray[i];
if (elem < MAXVAL && c[elem] == 0) {
ret++;
}
c[elem]++;
}
return ret;
}
int main() {
unsigned int myElements[10] = {0, 25, 42, 42, 1, 2, 42, 0, 24, 24};
printf("Distincts elements : %d\n", CountDistinctsElements(myElements, 10));
return 0;
}
ICAgICNpbmNsdWRlIDxzdGRpby5oPgogICAgI2luY2x1ZGUgPHN0cmluZy5oPgogICAgCiAgICAjZGVmaW5lIE1BWFZBTCA1MAogICAgCiAgICB1bnNpZ25lZCBpbnQgQ291bnREaXN0aW5jdHNFbGVtZW50cyh1bnNpZ25lZCBpbnQqIGlBcnJheSwgdW5zaWduZWQgaW50IGlOYkVsZW0pIHsKICAgICAgdW5zaWduZWQgaW50IHJldCA9IDA7CiAgICAKICAgICAgLy90aGlzIGFycmF5IHdpbGwgY29udGFpbnMgdGhlIGNvdW50IG9mIGVhY2ggdmFsdWUKICAgICAgLy9mb3IgZXhhbXBsZSwgY1szXSB3aWxsIGNvbnRhaW4gdGhlIGNvdW50IG9mIHRoZSB2YWx1ZSAzIGluIHlvdXIgb3JpZ2luYWwgYXJyYXkKICAgICAgdW5zaWduZWQgaW50IGNbTUFYVkFMXTsKICAgICAgbWVtc2V0KGMsIDAsIE1BWFZBTCpzaXplb2YodW5zaWduZWQgaW50KSk7CiAgICAKICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaT0wOyBpPGlOYkVsZW07IGkrKykgewogICAgICAgIHVuc2lnbmVkIGludCBlbGVtID0gaUFycmF5W2ldOwogICAgICAgIGlmIChlbGVtIDwgTUFYVkFMICYmIGNbZWxlbV0gPT0gMCkgewogICAgICAgICAgcmV0Kys7CiAgICAgICAgfQogICAgICAgIGNbZWxlbV0rKzsKICAgICAgfQogICAgICByZXR1cm4gcmV0OwogICAgfQogICAgCiAgICBpbnQgbWFpbigpIHsKICAgICAgdW5zaWduZWQgaW50IG15RWxlbWVudHNbMTBdID0gezAsIDI1LCA0MiwgNDIsIDEsIDIsIDQyLCAwLCAyNCwgMjR9OwogICAgICBwcmludGYoIkRpc3RpbmN0cyBlbGVtZW50cyA6ICVkXG4iLCBDb3VudERpc3RpbmN0c0VsZW1lbnRzKG15RWxlbWVudHMsIDEwKSk7CiAgICAgIHJldHVybiAwOwogICAgfQ==