Cod sursa(job #3337730)

Utilizator FlofyA Programmer Flofy Data 29 ianuarie 2026 17:32:04
Problema Distincte Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin ("distincte.in");
ofstream fout ("distincte.out");

const int dim = 1e5 + 2, mod = 666013, oo = 1e9;
int n, i, m, k, v[dim], ultimul[dim], t[2 * dim];

void build()
{
    for(i = n; i >= 1; i--)
        t[i] = t[i * 2] + t[i * 2 + 1];
}

int query(int st, int dr)
{
    int rez = 0;

    st = st + n - 1;
    dr = dr + n;

    while(st < dr)
    {
        if(st % 2 == 1)
        {
            rez += t[st];
            st++;
        }

        if(dr % 2 == 1)
        {
            dr--;
            rez += t[dr];
        }
        st = st / 2;
        dr = dr / 2;
    }

    return rez;
}

int main()
{
    fin >> n >> k>> m;

    for(i = 1; i <= n; i++)
    {
        fin >> v[i];

        if(ultimul[v[i]] != 0)
            t[ultimul[v[i]] + n - 1] = 0;

        ultimul[v[i]] = i;
        t[n + i - 1] = v[i];
    }

    build();


    for(i = 1; i <= m; i++)
    {
        int x, y;
        fin >> x >> y;
        fout << query(x, y) + 1 << '\n';
    }

    return 0;
}