Решение задачи Сережа и суффиксы с Codeforces

Без пояснения   Просмотров: 36


У Сережи есть массив a, состоящий из n целых чисел a1, a2, ..., an. Мальчику не сидится на месте, и он решил заняться изучением массива. Сережа выписал на листочек m целых чисел l1, l2, ..., lm (1 ≤ li ≤ n). Для каждого числа li он хочет узнать: сколько есть различных чисел среди чисел ali, ali + 1, ..., an?

Сережа выписывал и выписывал нужные элементы массива, но массив был большой, а времени у Сережи мало. Помогите ему, найдите ответ на описанный вопрос для каждого li.

Код

#include<bits/stdc++.h>
using namespace std;
int i,n,m,l,a[100005];set<int>s;
int main()
{
    cin>>n>>m;
    for(i=1;i<=n;i++)
    cin>>a[i];
    for(i=n;i>=1;i--)
    s.insert(a[i]),a[i]=s.size();
    while(m--)
    {
        cin>>l;
        cout<<a[l]<<"\n";
    }
}

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться