【题目描述】
现在给你一个从小到大排序的集合,定义其中两个元素的距离为它们在集合中的名次之差的绝对值。给你集合中的两个元素,请计算距离。
【输入】
有多行。第1行是一个数n(10000≤n≤1000000),代表集合中一共有n个数。接下来一行有n个数。这n个数由小到大排列(所有的数都为整型数据,并且没有相等的数)。第3行是一个数m(5000≤m≤10000),代表询问次数。然后有m行,每行两个数,a,b(a,b保证是集合中的元素,所以请不要考虑a,b不在集合中的特殊情况,a和b最大为2000000)表示询问a,b之间的距离。注意数据很大的!!!!
【输出】
有m行。每行一个整数,表示每次询问a和b的距离。
【样例输入】
5
1 3 5 6 8
3
1 5
1 6
8 3
【样例输出】
2
3
3
#include<stdio.h> #include<math.h> int main() { int n,i,j,sum,x,t1,t2,p1,p2; scanf("%d",&n); int m[n]; for(i=0;i<n;i++) scanf("%d",&m[i]); scanf("%d",&x); for(i=0;i<x;i++) { scanf("%d %d",&t1,&t2); for(j=0;j<n;j++) if(m[j]==t1) p1=j; for(j=0;j<n;j++) if(m[j]==t2) p2=j; sum=fabs(p1-p2); printf("%d\n",sum); } return 0; }
标签:38,10000,int,个数,距离,集合,第六章,include From: https://www.cnblogs.com/xrj1229/p/16882318.html