#include <iostream>
int* array_remove(int* f, int* l, bool (*cmp)(int)){
while((f != l) && ! (*cmp)(*f))
++f;
for(int* p = f; p != l; *p = *f){
if((*cmp)(*f))
--l;
else
++p;
++f;
}
return l;
}
bool compare(int n){
int k = n % 10;
for(n /= 10; n != 0; n /= 10){
if((n % 10) != k)
return false;
}
return true;
}
int main(void) {
int a[] = {1, 2000, 3, 4444, 5, 66, 717, 82, 9};
size_t n = sizeof(a)/sizeof(a[0]);
const int* e = array_remove(a, a + n, &compare);
for(const int* p = &a[0]; p != e; ++p)
std::cout << *p << ' ';
std::cout << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKaW50KiBhcnJheV9yZW1vdmUoaW50KiBmLCBpbnQqIGwsIGJvb2wgKCpjbXApKGludCkpewoJd2hpbGUoKGYgIT0gbCkgJiYgISAoKmNtcCkoKmYpKQoJCSsrZjsKCWZvcihpbnQqIHAgPSBmOyBwICE9IGw7ICpwID0gKmYpewoJCWlmKCgqY21wKSgqZikpCgkJCS0tbDsKCQllbHNlCgkJCSsrcDsKCQkrK2Y7Cgl9CglyZXR1cm4gbDsKfQoKYm9vbCBjb21wYXJlKGludCBuKXsKCWludCBrID0gbiAlIDEwOwoJZm9yKG4gLz0gMTA7IG4gIT0gMDsgbiAvPSAxMCl7CgkJaWYoKG4gJSAxMCkgIT0gaykKCQkJcmV0dXJuIGZhbHNlOwoJfQoJcmV0dXJuIHRydWU7Cn0KCgppbnQgbWFpbih2b2lkKSB7CglpbnQgIGFbXSA9IHsxLCAyMDAwLCAzLCA0NDQ0LCA1LCA2NiwgNzE3LCA4MiwgOX07CglzaXplX3QgbiA9IHNpemVvZihhKS9zaXplb2YoYVswXSk7CiAKCWNvbnN0IGludCogZSA9IGFycmF5X3JlbW92ZShhLCBhICsgbiwgJmNvbXBhcmUpOwoJZm9yKGNvbnN0IGludCogcCA9ICZhWzBdOyBwICE9IGU7ICsrcCkKCQlzdGQ6OmNvdXQgPDwgKnAgPDwgJyAnOwoJc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKCXJldHVybiAwOwp9