当前位置: 首页 > 工具软件 > deck > 使用案例 >

E - Yet Another Card Deck

阎英朗
2023-12-01

 E - Yet Another Card Deck

You have a card deck of nn cards, numbered from top to bottom, i. e. the top card has index 11 and bottom card — index nn. Each card has its color: the ii-th card has color a_iai​.

You should process qq queries. The jj-th query is described by integer t_jtj​. For each query you should:

  • find the highest card in the deck with color t_jtj​, i. e. the card with minimum index;
  • print the position of the card you found;
  • take the card and place it on top of the deck.

Input

The first line contains two integers nn and qq (2 \le n \le 3 \cdot 10^52≤n≤3⋅105; 1 \le q \le 3 \cdot 10^51≤q≤3⋅105) — the number of cards in the deck and the number of queries.

The second line contains nn integers a_1, a_2, \dots, a_na1​,a2​,…,an​ (1 \le a_i \le 501≤ai​≤50) — the colors of cards.

The third line contains qq integers t_1, t_2, \dots, t_qt1​,t2​,…,tq​ (1 \le t_j \le 501≤tj​≤50) — the query colors. It's guaranteed that queries ask only colors that are present in the deck.

Output

Print qq integers — the answers for each query.

Example

Input

7 5
2 1 1 4 3 3 1
3 2 1 1 4

Output

5 2 3 1 5

Note

Description of the sample:

  1. the deck is [2, 1, 1, 4, \underline{3}, 3, 1][2,1,1,4,3​,3,1] and the first card with color t_1 = 3t1​=3 has position 55;
  2. the deck is [3, \underline{2}, 1, 1, 4, 3, 1][3,2​,1,1,4,3,1] and the first card with color t_2 = 2t2​=2 has position 22;
  3. the deck is [2, 3, \underline{1}, 1, 4, 3, 1][2,3,1​,1,4,3,1] and the first card with color t_3 = 1t3​=1 has position 33;
  4. the deck is [\underline{1}, 2, 3, 1, 4, 3, 1][1​,2,3,1,4,3,1] and the first card with color t_4 = 1t4​=1 has position 11;
  5. the deck is [1, 2, 3, 1, \underline{4}, 3, 1][1,2,3,1,4​,3,1] and the first card with color t_5 = 4t5​=4 has position 55.

Sponsor

//这题虽然给了两秒,但数据很大,而且一看就必须得嵌套循环
//普通位置对应颜色的筛查应该是行不通,但这题良心的只给了
//50种颜色...这不很明显嘛,用颜色标记位置!走起~
#include <iostream>
#include<algorithm>
using namespace std;
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    int color[51] = { 0 };
    int n, q;
    cin >> n >> q;
    int eveco, * answer;//储存答案
    answer = (int*)malloc(q * sizeof(int));
    for (int i = 1; i <= n; i++) {//储存颜色种类对应第一次出现的位置
        cin >> eveco;
        if (color[eveco] == 0) {
            color[eveco] = i;
        }
    }
    int t, j = 0;
    for (int i = 0; i < q; i++) {
        cin >> t;
        answer[j++] = color[t];//储存答案
        for (int k = 1; k <= 50; k++) {
            if (color[k] < color[t] && color[k] != 0) {//比筛查样例小的位置+1
                color[k]++;
            }
            else continue;
        }
        color[t] = 1;//把筛查样例放在最前面
    }
    for (int h = 0; h < j; h++) {
        cout << answer[h] << ' ';
    }
    return 0;
}

 类似资料: