#include<stdio.h>
unsigned remove_dumped_memory(unsigned *array, unsigned nItem);
int main(){
int i;
unsigned size = 10;
unsigned a[10] = {1,1,2,2,2,3,5,8,8,9};
size = remove_dumped_memory(a, size);
printf("content of array:\n"); for(i = 0; i < size; i++){
}
printf("\narray size: %d\n", size
);
return 0;
}
unsigned remove_dumped_memory(unsigned *array, unsigned nItem){
int cnt=1;
int mid, left = 1, right = nItem-1;
unsigned key = array[0];
for(mid = (left+right)/2; left <= right; mid = (left+right)/2){
if(key != array[left]){
array[cnt] = array[left];
key = array[left];
left++;
cnt++;
}else{
if(key == array[mid]){
left = mid+1;
}
}
}
return cnt;
}
I2luY2x1ZGU8c3RkaW8uaD4KIAp1bnNpZ25lZCByZW1vdmVfZHVtcGVkX21lbW9yeSh1bnNpZ25lZCAqYXJyYXksIHVuc2lnbmVkIG5JdGVtKTsKIAppbnQgbWFpbigpewogICAgICAgIGludCBpOwogICAgICAgIHVuc2lnbmVkIHNpemUgPSAxMDsKICAgICAgICB1bnNpZ25lZCBhWzEwXSA9IHsxLDEsMiwyLDIsMyw1LDgsOCw5fTsKIAogICAgICAgIHNpemUgPSByZW1vdmVfZHVtcGVkX21lbW9yeShhLCBzaXplKTsKIAogICAgICAgIHByaW50ZigiY29udGVudCBvZiBhcnJheTpcbiIpOwogICAgICAgIGZvcihpID0gMDsgaSA8IHNpemU7IGkrKyl7CiAgICAgICAgICAgICAgICBwcmludGYoIiVkICIsIGFbaV0pOwogICAgICAgIH0KICAgICAgICBwcmludGYoIlxuYXJyYXkgc2l6ZTogJWRcbiIsIHNpemUpOwogCiAgICAgICAgcmV0dXJuIDA7Cn0KIAp1bnNpZ25lZCByZW1vdmVfZHVtcGVkX21lbW9yeSh1bnNpZ25lZCAqYXJyYXksIHVuc2lnbmVkIG5JdGVtKXsKICAgICAgICBpbnQgY250PTE7CiAgICAgICAgaW50IG1pZCwgbGVmdCA9IDEsIHJpZ2h0ID0gbkl0ZW0tMTsKICAgICAgICB1bnNpZ25lZCBrZXkgPSBhcnJheVswXTsKICAgICAgICAKICAgICAgICBmb3IobWlkID0gKGxlZnQrcmlnaHQpLzI7IGxlZnQgPD0gcmlnaHQ7IG1pZCA9IChsZWZ0K3JpZ2h0KS8yKXsKICAgICAgICAgICAgICAgIGlmKGtleSAhPSBhcnJheVtsZWZ0XSl7CiAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5W2NudF0gPSBhcnJheVtsZWZ0XTsKICAgICAgICAgICAgICAgICAgICAgICAga2V5ID0gYXJyYXlbbGVmdF07CiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQrKzsKICAgICAgICAgICAgICAgICAgICAgICAgY250Kys7CiAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoa2V5ID09IGFycmF5W21pZF0pewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBtaWQrMTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gY250Owp9Cg==