#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("%d ", a[i]);
        }
        printf("\narray size: %d\n", size);
 
        return 0;
}
 
unsigned remove_dumped_memory(unsigned *array, unsigned nItem){
        int cnt=1;
        int 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;
}
