Cod sursa(job #3348983)

Utilizator robertcosacCosac Robert-Mihai robertcosac Data 24 martie 2026 21:59:49
Problema Distincte Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <bits/stdc++.h>
#define int long long
using namespace std;
ifstream f("distincte.in");
ofstream g("distincte.out");
const int mod=666013;
int v[100009], aib[100009], last[100009], n;
int ans[100009];
void update (int poz, int add)
{
    for (int i=poz; i<=n; i+=i&-i)
        aib[i]+=add;
}
int query (int poz)
{
    int ans=0;
    for (int i=poz; i>=1; i-=i&-i)
        ans+=aib[i];
    return ans;
}
struct elem
{
    int l, r, idx;
    bool operator < (const elem & other) const
    {
        return (r<other.r|| (r==other.r && l<other.l));
    }
};
elem q[100009];
signed main ()
{
    int k,t;
    f >> n >> k >> t;
    for (int i=1; i<=n; i++)
    {
        f >> v[i];
        update (i, v[i]);
    }
    for (int i=1; i<=t; i++)
        f >> q[i].l >> q[i].r, q[i].idx=i;
    sort (q+1, q+t+1);
    int dr=1;
    for (int i=1; i<=t; i++)
    {
        while (dr<=q[i].r)
        {
            if (last[v[dr]])
                update (last[v[dr]], -v[dr]);
            last[v[dr]]=dr;
            dr++;
        }
        ans[q[i].idx]=(query (q[i].r)-query (q[i].l-1)+mod)%mod;
    }
    for (int i=1; i<=t; i++)
        g << ans[i]<<'\n';
}