题解 | 【模板】序列操作
【模板】序列操作
https://www.nowcoder.com/practice/12da4185c0bb45918cfdc3072e544069
#include <iostream>
#include <sys/types.h>
using namespace std;
int main() {
int N;
int arr[7001];
while (cin >> N) {
int index = 0;
while (N--) {
int choice;
cin>>choice;
switch (choice) {
case 1:{
int x;
cin>>x;
arr[index]=x;
index++;
break;
}
case 2:{
if (!index) {
break;
}
else {
index--;
}
break;
}
case 3:{
int i;
cin>>i;
cout<<arr[i]<<endl;
break;
}
case 4:{
int i,x;
cin>>i>>x;
for (int n=index; n>i; n--) {
arr[n]=arr[n-1];
}
arr[i+1] = x;
index++;
break;
}
case 5:{
for (int i=0; i<index-1; i++) {
bool flag =0;
for (int j=index-1; j>0; j--) {
if (arr[j]<arr[j-1]) {
int temp;
temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
flag = 1;
}
}
if (!flag) {
break;
}
}
break;
}
case 6:{
for (int i=1; i<index; i++) {
int j = i-1;
int key = arr[i];
while (j>=0 && arr[j]<key) {
arr[j+1] = arr[j];
j--;
}
arr[j+1] = key;
}
break;
}
case 7:{
cout<<index<<endl;
break;
}
case 8:{
for (int i=0; i<index; i++) {
cout<<arr[i]<<' ';
}
cout<<endl;
break;
}
}
}
}
}
// 64 位输出请用 printf("%lld")