#include <iostream>
using namespace std;
class IntArr
{
private:
int* ptrArr;
int len;
public:
IntArr(int len);
~IntArr();
int length() const { return len;}
void compress();
};
IntArr::IntArr(int len)
{
this->len = len;
ptrArr = new int[len];
for (int i = 0; i < len; i++)
{
ptrArr[i] = 0;
}
}
IntArr::~IntArr()
{
delete [] ptrArr;
}
void IntArr::compress()
{
int count=0;
int index=0;
for (int i = 0; i < len; i++)
{
if (ptrArr[i] != 0)
count++;
}
int* ptrArr1 = new int[count];
for (int i = 0; i < len; i++)
{
if (ptrArr[i] != 0)
ptrArr1[index] = ptrArr[i];
index += 1;
}
delete[] ptrArr;
ptrArr = ptrArr1;
len = count;
}
int main()
{
IntArr arr(100);
srand((unsigned int)time(NULL));
for (int i = 0; i < arr.length(); i++)
{
arr[i] = rand();
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgSW50QXJyCnsKCXByaXZhdGU6CgkJaW50KiBwdHJBcnI7CQkKCQlpbnQgbGVuOwoKCXB1YmxpYzoJCQoJCUludEFycihpbnQgbGVuKTsKCQl+SW50QXJyKCk7CgoJCWludCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBsZW47fQkJCgkJdm9pZCBjb21wcmVzcygpOwp9OwoKSW50QXJyOjpJbnRBcnIoaW50IGxlbikKewoJdGhpcy0+bGVuID0gbGVuOwoJcHRyQXJyID0gbmV3IGludFtsZW5dOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykKCXsKCQlwdHJBcnJbaV0gPSAwOwoJfQp9CgpJbnRBcnI6On5JbnRBcnIoKQp7CglkZWxldGUgW10gcHRyQXJyOwp9Cgp2b2lkIEludEFycjo6Y29tcHJlc3MoKQp7CQoJaW50IGNvdW50PTA7CglpbnQgaW5kZXg9MDsKCglmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKQoJewoJCWlmIChwdHJBcnJbaV0gIT0gMCkKCQkJY291bnQrKzsKCX0KCglpbnQqIHB0ckFycjEgPSBuZXcgaW50W2NvdW50XTsKCglmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKQoJewkJCgkJaWYgKHB0ckFycltpXSAhPSAwKQkJCQoJCSAgICBwdHJBcnIxW2luZGV4XSA9IHB0ckFycltpXTsJCSAgICAKCQkJaW5kZXggKz0gMTsKCX0KCglkZWxldGVbXSBwdHJBcnI7CglwdHJBcnIgPSBwdHJBcnIxOwoJbGVuID0gY291bnQ7Cn0KCmludCBtYWluKCkKewogICAgSW50QXJyIGFycigxMDApOwoKICAgIHNyYW5kKCh1bnNpZ25lZCBpbnQpdGltZShOVUxMKSk7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoKCk7IGkrKykKICAgIHsKICAgICAgICBhcnJbaV0gPSByYW5kKCk7CiAgICB9Cn0K