#include <iostream>
#include <cstring>
using namespace std;
template <typename T>
class vector {
int size_arr;
T * vec = new T;
public:
vector(/*int _size*/) {
vec = new T[0];
size_arr = 0;
};
~vector() {
size_arr = 0;
delete[] vec;
};
vector(vector &v) {
vec = new T[v.size()];
memcpy(vec, v.vec,v.size() * sizeof(T));
size_arr = v.size();
}
void push_back(T data) {
T *temp = new T[size_arr + 1];
for (int i = 0; i < size_arr; i++)
temp[i] = vec[i];
temp[size_arr] = data;
size_arr++;
delete[] vec;
vec = temp;
};
void push_front(T data){
int j;
T *temp = new T[size_arr + 1];
for ( j = size_arr; j >= 0;j--) {
temp[j + 1] = vec[j];
}
temp[0] = data;
delete[] vec;
vec = temp;
size_arr++;
};
void insert(int index, T data) {
int j;
T *temp = new T[size_arr + 1];
for (int i = 0; i < size_arr ;i++)
temp[i] = vec[i];
for (int i = 0; i < size_arr;i++) {
if (i == index) {
for ( j = size_arr; j >=i;j--) {
temp[j+1] = vec[j];
}
temp[j + 1] = data;
delete[] vec;
vec = temp;
size_arr++;
}
}
};
void pop() {
T *temp = new T[size_arr - 1];
for (int i = 0; i < size_arr-1;i++)
temp[i] = vec[i];
size_arr--;
delete[] vec;
vec = temp;
};
void Delete(int index)
{
T *temp = new T[size_arr - 1];
for (int i = 0; i < index;i++)
temp[i] = vec[i];
for (int i = 0; i < size_arr;i++) {
if (i == index) {
for (int j = i; j < size_arr-1;j++) {
temp[j] = vec[j + 1];
}
size_arr--;
delete[] vec;
vec = temp;
}
}
};
int search(T data) {
for (int i = 0; i < size_arr;i++) {
if (vec[i] == data) {
return i;
}
}
return -1;
};
int size() { return size_arr; };
};
int main() {
vector <int>test;
test.push_front(2);
test.push_front(3);
test.push_back(0);
test.push_back(-1);
test.insert(2, 2);
test.pop();
vector <int > test1{test};
test1.pop();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpjbGFzcyB2ZWN0b3IgewogICAgaW50IHNpemVfYXJyOwogICAgVCAqIHZlYyA9IG5ldyBUOwpwdWJsaWM6CiAgICB2ZWN0b3IoLyppbnQgX3NpemUqLykgewogICAgICAgIHZlYyA9IG5ldyBUWzBdOwogICAgICAgIHNpemVfYXJyID0gMDsKICAgIH07CiAgICB+dmVjdG9yKCkgewogICAgICAgIHNpemVfYXJyID0gMDsKICAgICAgICBkZWxldGVbXSB2ZWM7CiAgICB9OwogICAgdmVjdG9yKHZlY3RvciAmdikgewogICAgICAgIHZlYyA9IG5ldyBUW3Yuc2l6ZSgpXTsKICAgICAgICBtZW1jcHkodmVjLCB2LnZlYyx2LnNpemUoKSAqIHNpemVvZihUKSk7CiAgICAgICAgc2l6ZV9hcnIgPSB2LnNpemUoKTsKICAgIH0Kdm9pZCBwdXNoX2JhY2soVCBkYXRhKSB7CiAgICBUICp0ZW1wID0gbmV3IFRbc2l6ZV9hcnIgKyAxXTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZV9hcnI7IGkrKykKICAgICAgICB0ZW1wW2ldID0gdmVjW2ldOwogICAgdGVtcFtzaXplX2Fycl0gPSBkYXRhOwogICAgc2l6ZV9hcnIrKzsKICAgIGRlbGV0ZVtdIHZlYzsKICAgIHZlYyA9IHRlbXA7Cn07CnZvaWQgcHVzaF9mcm9udChUIGRhdGEpewogICAgaW50IGo7CiAgICBUICp0ZW1wID0gbmV3IFRbc2l6ZV9hcnIgKyAxXTsKICAgIGZvciAoIGogPSBzaXplX2FycjsgaiA+PSAwO2otLSkgewogICAgICAgIHRlbXBbaiArIDFdID0gdmVjW2pdOwogICAgfQogICAgdGVtcFswXSA9IGRhdGE7CiAgICBkZWxldGVbXSB2ZWM7CiAgICB2ZWMgPSB0ZW1wOwogICAgc2l6ZV9hcnIrKzsKfTsKdm9pZCBpbnNlcnQoaW50IGluZGV4LCBUIGRhdGEpIHsKICAgIGludCBqOwogICAgVCAqdGVtcCA9IG5ldyBUW3NpemVfYXJyICsgMV07CiAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemVfYXJyIDtpKyspCiAgICAgICAgdGVtcFtpXSA9IHZlY1tpXTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZV9hcnI7aSsrKSB7CiAgICAgICAgaWYgKGkgPT0gaW5kZXgpIHsKICAgICAgICAgICAgZm9yICggaiA9IHNpemVfYXJyOyBqID49aTtqLS0pIHsKICAgICAgICAgICAgICAgIHRlbXBbaisxXSA9IHZlY1tqXTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0ZW1wW2ogKyAxXSA9IGRhdGE7CiAgICAgICAgICAgIGRlbGV0ZVtdIHZlYzsKICAgICAgICAgICAgdmVjID0gdGVtcDsKICAgICAgICAgICAgc2l6ZV9hcnIrKzsKICAgICAgICB9CiAgICB9Cn07CnZvaWQgcG9wKCkgewogICAgVCAqdGVtcCA9IG5ldyBUW3NpemVfYXJyIC0gMV07CiAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemVfYXJyLTE7aSsrKQogICAgICAgIHRlbXBbaV0gPSB2ZWNbaV07CiAgICBzaXplX2Fyci0tOwogICAgZGVsZXRlW10gdmVjOwogICAgdmVjID0gdGVtcDsKfTsKdm9pZCBEZWxldGUoaW50IGluZGV4KSAKewogICAgVCAqdGVtcCA9IG5ldyBUW3NpemVfYXJyIC0gMV07CiAgICBmb3IgKGludCBpID0gMDsgaSA8IGluZGV4O2krKykgCiAgICAgICAgdGVtcFtpXSA9IHZlY1tpXTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZV9hcnI7aSsrKSB7CiAgICAgICAgaWYgKGkgPT0gaW5kZXgpIHsKICAgICAgICAgICAgZm9yIChpbnQgaiA9IGk7IGogPCBzaXplX2Fyci0xO2orKykgewogICAgICAgICAgICAgICAgdGVtcFtqXSA9IHZlY1tqICsgMV07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2l6ZV9hcnItLTsKICAgICAgICAgICAgZGVsZXRlW10gdmVjOwogICAgICAgICAgICB2ZWMgPSB0ZW1wOwogICAgICAgIH0KICAgIH0KfTsKaW50IHNlYXJjaChUIGRhdGEpIHsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZV9hcnI7aSsrKSB7CiAgICAgICAgaWYgKHZlY1tpXSA9PSBkYXRhKSB7CiAgICAgICAgICAgIHJldHVybiBpOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAtMTsKfTsKaW50IHNpemUoKSB7IHJldHVybiBzaXplX2FycjsgfTsKfTsKCmludCBtYWluKCkgewogICAgdmVjdG9yIDxpbnQ+dGVzdDsKICAgIHRlc3QucHVzaF9mcm9udCgyKTsKICAgIHRlc3QucHVzaF9mcm9udCgzKTsKICAgIHRlc3QucHVzaF9iYWNrKDApOwogICAgdGVzdC5wdXNoX2JhY2soLTEpOwogICAgdGVzdC5pbnNlcnQoMiwgMik7CiAgICB0ZXN0LnBvcCgpOwoKICAgIHZlY3RvciA8aW50ID4gdGVzdDF7dGVzdH07CiAgICB0ZXN0MS5wb3AoKTsKCn0=