1264 魔术师

 

描述

黑羽盗一是一位世界著名的魔术师。(什么?你不认识?他就是黑羽快斗的老爸。你也不认识黑羽快斗???哦,对了,他的身份(怪盗基德)可是个秘密。别声张 啊~~~)有一次他给小快斗变魔术。他准备了10000张卡片,每张卡片上都有一个唯一的数字。他让快斗抽出n张卡片,按照卡片上数字的大小顺序排成一 行。盗一背对着这些卡片,让快斗随便说一个数字,伟大的魔术师黑羽盗一总是能说出这个数字在这行卡片中的位置。快斗问了m遍,盗一没有失误过一次。而他的 秘诀就是——他除了是一个伟大的魔术师之外,还是一个伟大的程序员。

现在,轮到你来重现这个伟大的魔术!!!!!!

输入

第一行一个整数表示数据的组数(多组数据),对于每组数据第一行有两个整数 n (1 ≤ n ≤ 10000) ,m ( 1 ≤ m ≤ n) 。第二行是一个长度为n 的严格单调递增的整数序列。第三行有 m 个询问,每个询问包括一个整数。

输出

对于每个询问输出一行,如果该整数在序列中则返回它是序列中的第几个数,否则返回-1。

样例输入

1
5 3
1 2 3 4 5
2 4 6

样例输出

2
4
-1

解题思路:
排序就可以,这里用的是最简单的冒泡排序,其实可以用快排的。懒了啊。

 

#include <stdio.h>  
#include<math.h>

main()  
{ int number,te;
  int number1,number2;
  int a[10000],flag;
  int i,j,temp,b;
  scanf("%d",&number);
  for(te=1;te<=number;te++)
  {
	  scanf("%d %d",&number1,&number2);

	  for(i=0;i<number1;i++)
		  scanf("%d",&a[i]);

	  for(i=0;i<number1;i++)
		  for(j=i+1;j<number1;j++)
		  {
			  if(a[i]>a[j])
			  {  temp=a[i];
			    a[i]=a[j];
				a[j]=temp;

			  }
		  }

		  for(i=0;i<number2;i++)
		  { scanf("%d",&b);
		  flag=0;
              for(j=0;j<number1;j++)
				  if(a[j]==b)
				  {   flag=1;
					  printf("%d\n",j+1);
					  break;

		  
				  }
				  if(flag==0)
					  printf("-1\n");
		  }
  }

}  


 


你可能感兴趣的:(1264 魔术师)