题目描述
给定一个长度为n的整数序列。现在有m个操作,操作分为三类,格式如下:
① 1 i:询问序列中第i个元素的值,保证i小于等于当前序列长度;
② 2 i v:在序列中第i个元素前加入新的元素v,保证i小于等于当前序列长度;
③ 3 i:删除序列中的第i个元素,保证i小于等于当前序列长度。
输入格式
第一行输入n(1<=n<=1000),表示序列最初的长度。
第二行输入n个空格隔开的数表示原始的整数序列。
第三行输入m(1<=m<=1000),表示操作数。
第四到m+3行依次输入一个操作。
输出格式
对于操作①输出对应的答案,一行输出一个数。
输入输出样列
输入样例1:
5
6 31 23 14 5
5
1 2
2 2 7
1 2
3 3
1 3
输出样例1:
31
7
23
说明
1<=n<=1000, 1<=m<=1000,每个元素都是不超过1000000的正整数。
【耗时限制】1000ms 【内存限制】256MB
这道题运用vector算法,基本操作
代码如下:
#include <bits/stdc++.h>
using namespace std;
vector<int> v;
int main()
{
int n,x;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>x;
v.push_back(x);
}
int m,c,p,val;
cin>>m;
while(m--)
{
cin>>c;
if(c==1)
{
cin>>p;
cout<<v[p-1]<<endl;
}
else if(c==2)
{
cin>>p>>val;
v.insert(v.begin()+p-1,val);
}
else
{
cin>>p;
v.erase(v.begin()+p-1);
}
}
return 0;
}