编程任务编号 H: 剪辑电影片段

任务描述

给定一部电影,我们需要从中剪辑一小片段,并且需要将此片段有可能顺序播放,也可能倒序播放。
我们将此问题简化如下。给定一个数组,从中读取指定起止范围内的元素,顺序或者反序输出。

输入

第一个有一个整数n(0<n<=100)表示数组中元素的个数。
其后一行中有n个数据,分别表示数组中的n个元素,每个值的取值范围为[0,10000]。
此后有一行,包含一个整数k(0<k<=100),表示测试用例的个数。
其后k行,每行2个数据,每个数据的取值范围为[1,n],这两个数据分别表示剪辑的起点和终点位置。

输出

对于每次测试用例,输出一行。
输出起点和终点位置之间的元素,包括起点和终点在内。如果起点位置小于终点位置,则顺序输出,否则,反序输出。
一行中的多个输出数据用空格分隔。注意,每行的行尾没有空格,只有换行。

输入举例


10 2 8 4 6 9 3 0 5 2 7 5 9 9 1 10 10 1 3 9 4 2


输出举例


2 2 8 4 6 9 3 0 5 2 7 7 2 5 0 3 9 6 4 8 2 4 6 9 3 0 5 2 6 4 8


 

#include <stdio.h>
#include <string.h>

int a[100];
void clips(int start , int end){
int i,j,len,inc;
if(start < end){
len = end - start + 1;
inc = 1;
}else{
len = start - end + 1;
inc = -1;
}
for(i=0,j=start;i<len-1;i++,j+=inc){
printf("%d ",a[j]);
}
printf("%d\n",a[j]);
}

int main(){
int n,i,k,start,end;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
scanf("%d",&k);
for(i=0;i<k;i++){
scanf("%d %d",&start,&end);
clips(start-1,end-1);
}


}