#include using namespace std; struct Node{ unsigned long long value; Node *prev,*next; }; int counter; Node *nil; void init(){ nil = (Node*)malloc(sizeof(Node)); nil->value = -1; nil->next = nil; nil->prev = nil; } void customInsert(Node* base,unsigned long long ins){ Node* add = (Node*)malloc(sizeof(Node)); add-> value = ins; add-> next = base->next; add->prev = base; base->next->prev = add; base->next = add; counter++; } void insert(int ins){ customInsert(nil,ins); } void sortedInsert(unsigned long long key){ Node* cur = nil->next; while(key < cur->value && cur!=nil) cur = cur->next; customInsert(cur->prev,key); } bool deleteNode(Node* del){ if (del==nil) return false; del->next->prev = del->prev; del->prev->next = del->next; free(del); counter--; return true; } bool deleteFirst(){ return deleteNode(nil->next); } void cleanup(){ while(deleteFirst()); } Node* searchNode(unsigned long long key){ Node* cur = nil->next; while(cur!=nil && cur->value!=key){ cur = cur->next; } return cur; } Node* bigger_from(int index){ if (index>=counter) return nil; int count=1; Node* cur = nil->next; while(countnext; count++; } return cur; } Node* smaller_from(int index){ if (index>=counter) return nil; int count=0; Node* cur = nil->prev; while(countprev; count++; } return cur; } void traceNode(){ Node* cur= nil->next; while(cur!=nil){ cout << cur->value << endl; cur = cur->next; } } signed main(){ init(); int q,k; scanf("%d %d",&q,&k); for (int i=0;ivalue); deleteNode(temp); } } cleanup(); return 0; }