第1题 删除多段
有一个包含N个元素的数组, 现在有K次操作删除,每次删除一段,删除的每一段在之前删除操作结果的基础上继续删除。输出最终剩余数组中的元素。
输入格式
第一行1个正整数:N,范围在[1,100]。
第二行N个整数:范围在[0,10000]。
第三行1个整数:K,范围在[1,100]。
接下来K行,每行两个整数,x和y,表示需要删除的起始下标和结束下标,x小于y,且在剩余元素范围内。
输出格式
一行多个整数,表示剩余的数组的元素。
输入/输出例子1
输入:
10
1 2 3 4 5 6 7 8 9 0
3
2 4
3 6
1 1
输出:
5 0
样例解释
删除2−4后结果: 1 5 6 7 8 9 0
删除3−6结果: 1 5 0
删除1−1结果: 5 0
#include<bits/stdc++.h>
using namespace std;
int arr[10005];
int main(){
int n,k,s,e;
cin>>n;
for(int i=1;i<=n;i++) cin>>arr[i];
cin>>k;
for(int i=1;i<=k;i++){
cin>>s>>e;
for(int j=n-e+s-1;j>=s;j--){
arr[j]=arr[j+1+(e-s)];
}
n-=(e-s+1);
}
for(int i=1;i<=n;i++) cout<<arr[i]<<" ";
return 0;
}