#include #include #include #include class Vec { private: int *v; int LEN; int USED; public: Vec(int len) { LEN=len*2; v=new int[LEN]; USED=9; for(int i=0;i<10;i++) v[i]=i+1; for(int i=0;i<10;i++) swap(i,rand()%10); } int get(int a) { return v[a]; } void put(int a,int value) { v[a]=value; } void swap(int a, int b) { int temp = v[a]; v[a] = v[b]; v[b] = temp; } void expand() { LEN=LEN*2; int *p=new int[LEN]; for(int i=0;i<=USED;i++) p[i]=v[i]; delete[] v; v=p; } void shrink() { LEN=LEN>>1; int *p=new int[LEN]; for(int i=0;i<=USED;i++) p[i]=v[i]; delete[] v; v=p; } int insert(int locate,int value) { if(locate<0||locate>USED) return 1; USED++; if(USED>=LEN) expand(); for(int i=USED;i>locate;i--) v[i]=v[i-1]; v[locate]=value; return 0; } int del(int locate,int value) { if(locate<0||((USED-value)<0)||((locate+value-1)>USED)) return 1; USED=USED-value; for(int i=locate;i<=USED;i++) v[i]=v[i+value]; if( ( (double)USED/(double)LEN )<=0.3 ) shrink(); return 0; } int find(int value) { int i = 0; for(i;i<=USED;i++) { if(v[i]==value) { return i; } } return -1; } void printall() { for(int i=0;i