WUST Online Judge - 2174: 不同的数

2174: 不同的数

Time Limit: 1 Sec  Memory Limit: 128 MB   64bit IO Format: %lld
Submitted: 459  Accepted: 71
[Submit][Status][Web Board]

Description

n个数a1 a2 ... ai... an,m次询问,每次询问:从第x个数开始后面有多少不同的数。

Input

一组数据:

第一行2个整数 n, m。

接下来m行每行1个整数x。

数据范围:1 <= n,m,x <= 100000, 0 <= ai <= 100000;

Output

对于每次查询输出一行,一个整数,表示从第x个数开始后面不同的数的个数。

Sample Input

8 3
8 6 4 3 4 2 4 8
6
4
2

Sample Output

3
4
5

Author

刘银虎

 

代码如下:

#include <stdio.h>

int main() {
	int i, n, m, x;
	int a[100005], b[100005], c[100005];
	while (scanf("%d%d", &n, &m) != EOF) {
	    memset(b, 0, sizeof(b));
	    memset(c, 0, sizeof(c));
		for (i = 0; i < n; i++)
            scanf("%d", &a[i]);
        for (i = n - 1; i >= 0; i--) {
            if (!b[a[i]]) {
                c[i] = c[i + 1] + 1;
                b[a[i]]++;
            }
            else
                c[i] = c[i + 1];
        }
		while (m--) {
			scanf("%d", &x);
			printf("%d\n", c[x - 1]);
		}
	}
	return 0;
}

posted on 2018-06-12 00:29  _McR  阅读(208)  评论(0编辑  收藏  举报

导航