#include <stdio.h>
#include<stdlib.h>
#include<string.h>
int f5(const void*a,const void*b)
{return *(int*)a-*(int*)b;}
int f6(const void *a,const void *b){
return *(int*)b-*(int*)a;
}
int main()
{
int q;
scanf("%d",&q);
int *arr=NULL;
int len=0;
int cap=0;
while(q--){
int b; scanf("%d",&b);
switch(b){
case 1:{
int x;
scanf("%d",&x);
if(len>=cap){
cap=cap==0?4:cap*2;
arr=(int*)realloc(arr,cap*sizeof(int));
}
arr[len++]=x;
break;
}
case 2:{
if(len>0) len--;
break;
}
case 3:{
int i;
scanf("%d",&i);
printf("%d\n",arr[i]);
break;
}
case 4:{
int i,x;
scanf("%d %d",&i,&x);
if(len>=cap){
cap=cap==0?4:cap*2;
arr=(int*)realloc(arr,cap*sizeof(int));
}memmove(&arr[i+2],&arr[i+1],(len-i-1)*sizeof(int));
arr[i+1]=x;
len++;
break;
}
case 5:{
qsort(arr,len,sizeof(int),f5);
break;
}
case 6:{
qsort(arr,len,sizeof(int),f6);
break;
}
case 7:{
printf("%d\n",len);
break;
}
case 8:{
for(int j=0;j<len;j++){
if(j>0) printf(" ");
printf("%d",arr[j]);
}printf("\n");
break;
}
default:
break;
}
}
free(arr);
return 0;
}
注意插入位置是i+1,不是i

京公网安备 11010502036488号