索隆是有名的路痴,为了不让索隆走丢,娜美给了索隆一本地图。该地图有 N 个城市,
编号从 1 到 N。每个城市有个代号,索隆每到一个城市只能知道该城市的代号而不知道该城
市的编号,现有一份编号与代号对应的清单,你能帮索隆尽快地找到所在城市的编号吗? ★数据输入
输入第一行为两个正整数 N (1< =N < =1000000),M(1<=M<=10000) 表示有 N 个城
市,M 个询问
接下来 N 行,每行一个整数 ai(0<=ai<=100000000),第 i 行表示编号 i 的城市的代号
为 ai。这 N 个整数各不相同。
接下来一行为一个正整数 M (1<=M < =10000) ,表示有 M 个询问。
接下来 M 行,每行一个整数 b(0<=b<=100000000),表示当前所在城市的代号。 ★数据输出
编号从 1 到 N。每个城市有个代号,索隆每到一个城市只能知道该城市的代号而不知道该城
市的编号,现有一份编号与代号对应的清单,你能帮索隆尽快地找到所在城市的编号吗? ★数据输入
输入第一行为两个正整数 N (1< =N < =1000000),M(1<=M<=10000) 表示有 N 个城
市,M 个询问
接下来 N 行,每行一个整数 ai(0<=ai<=100000000),第 i 行表示编号 i 的城市的代号
为 ai。这 N 个整数各不相同。
接下来一行为一个正整数 M (1<=M < =10000) ,表示有 M 个询问。
接下来 M 行,每行一个整数 b(0<=b<=100000000),表示当前所在城市的代号。 ★数据输出
对于每个询问,输出一行一个整数,当前所在城市的编号,数据保证有解。
输入
6 3
4
5
7
10
8
2
4
5
8
输出
1
2
5
#include<cstdio>
const int N=1000010;
struct node
{
int index;
int value;
node *next;
};
node city[N];
int main()
{
int i,n,q,t;
node *p=new node;
scanf("%d %d",&n,&q);
for(i=0;i<n;++i){
scanf("%d",&t);
p->index=i+1;
p->next=NULL;
p->value=t;
if(city[t%1000000].next==NULL)
city[t%1000000]=*p;
else{
city[t%1000000].next=new node;
city[t%1000000].next=p;
}
}
for(i=0;i<q;++i){
scanf("%d",&t);
p=&city[t%1000000];
while(p->value!=t)p=p->next;
printf("%d\n",p->index);
}
}