#include <bits/stdc++.h>
using namespace std;
using ll = long long;
struct Occ {
ll x;
int pos;
};
struct Query {
int l, r, id;
};
struct Fenwick {
int n;
vector<ll> bit;
Fenwick(int n) : n(n), bit(n + 1, 0) {}
void dodaj(int i, ll v) {
for (; i <= n; i += i & -i)
bit[i] += v;
}
void dodaj_przedzial(int l, int r, ll v) {
if (l > r) return;
dodaj(l, v);
dodaj(r + 1, -v);
}
ll odczytaj(int i) {
ll wynik = 0;
for (; i > 0; i -= i & -i)
wynik += bit[i];
return wynik;
}
};
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int n, k, q;
cin >> n >> k >> q;
vector<ll> a(n + 1);
vector<Occ> wyst(n);
for (int i = 1; i <= n; i++) {
cin >> a[i];
wyst[i - 1] = {a[i], i};
}
// Sortujemy wystąpienia według wartości, a następnie pozycji.
sort(wyst.begin(), wyst.end(), [](Occ x, Occ y) {
if (x.x != y.x) return x.x < y.x;
return x.pos < y.pos;
});
vector<int> poprzednie(n + 1, 0);
vector<int> pk(n + 1, 0);
vector<int> pk1(n + 1, 0);
// Wyznaczamy potrzebne wcześniejsze wystąpienia.
int start = 0;
while (start < n) {
int koniec = start + 1;
while (koniec < n &&
wyst[koniec].x == wyst[start].x) {
koniec++;
}
for (int j = start; j < koniec; j++) {
int i = wyst[j].pos;
int t = j - start + 1;
// Poprzednie wystąpienie p_(t-1).
if (t >= 2)
poprzednie[i] = wyst[j - 1].pos;
// p_(t-k).
if (t > k)
pk[i] = wyst[j - k].pos;
// p_(t-k-1).
if (t > k + 1)
pk1[i] = wyst[j - k - 1].pos;
}
start = koniec;
}
vector<Query> zap(q);
for (int i = 0; i < q; i++) {
cin >> zap[i].l >> zap[i].r;
zap[i].id = i;
}
sort(zap.begin(), zap.end(), [](Query x, Query y) {
return x.r < y.r;
});
Fenwick fenwick(n);
vector<ll> wynik(q);
int j = 0;
for (int i = 1; i <= n; i++) {
// Usuwamy wkład z lewych końców, które
// przestały spełniać warunek.
fenwick.dodaj_przedzial(
pk1[i] + 1, pk[i], -a[i]
);
// Dodajemy wkład na nowych lewych końcach.
fenwick.dodaj_przedzial(
poprzednie[i] + 1, i, a[i]
);
// Odpowiadamy na zapytania z prawym końcem i.
while (j < q && zap[j].r == i) {
wynik[zap[j].id] =
fenwick.odczytaj(zap[j].l);
j++;
}
}
for (int i = 0; i < q; i++)
cout << wynik[i] << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp1c2luZyBsbCA9IGxvbmcgbG9uZzsKCnN0cnVjdCBPY2MgewogICAgbGwgeDsKICAgIGludCBwb3M7Cn07CgpzdHJ1Y3QgUXVlcnkgewogICAgaW50IGwsIHIsIGlkOwp9OwoKc3RydWN0IEZlbndpY2sgewogICAgaW50IG47CiAgICB2ZWN0b3I8bGw+IGJpdDsKCiAgICBGZW53aWNrKGludCBuKSA6IG4obiksIGJpdChuICsgMSwgMCkge30KCiAgICB2b2lkIGRvZGFqKGludCBpLCBsbCB2KSB7CiAgICAgICAgZm9yICg7IGkgPD0gbjsgaSArPSBpICYgLWkpCiAgICAgICAgICAgIGJpdFtpXSArPSB2OwogICAgfQoKICAgIHZvaWQgZG9kYWpfcHJ6ZWR6aWFsKGludCBsLCBpbnQgciwgbGwgdikgewogICAgICAgIGlmIChsID4gcikgcmV0dXJuOwoKICAgICAgICBkb2RhaihsLCB2KTsKICAgICAgICBkb2RhaihyICsgMSwgLXYpOwogICAgfQoKICAgIGxsIG9kY3p5dGFqKGludCBpKSB7CiAgICAgICAgbGwgd3luaWsgPSAwOwoKICAgICAgICBmb3IgKDsgaSA+IDA7IGkgLT0gaSAmIC1pKQogICAgICAgICAgICB3eW5payArPSBiaXRbaV07CgogICAgICAgIHJldHVybiB3eW5pazsKICAgIH0KfTsKCmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CgogICAgaW50IG4sIGssIHE7CiAgICBjaW4gPj4gbiA+PiBrID4+IHE7CgogICAgdmVjdG9yPGxsPiBhKG4gKyAxKTsKICAgIHZlY3RvcjxPY2M+IHd5c3Qobik7CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgY2luID4+IGFbaV07CiAgICAgICAgd3lzdFtpIC0gMV0gPSB7YVtpXSwgaX07CiAgICB9CgogICAgLy8gU29ydHVqZW15IHd5c3TEhXBpZW5pYSB3ZWTFgnVnIHdhcnRvxZtjaSwgYSBuYXN0xJlwbmllIHBvenljamkuCiAgICBzb3J0KHd5c3QuYmVnaW4oKSwgd3lzdC5lbmQoKSwgW10oT2NjIHgsIE9jYyB5KSB7CiAgICAgICAgaWYgKHgueCAhPSB5LngpIHJldHVybiB4LnggPCB5Lng7CiAgICAgICAgcmV0dXJuIHgucG9zIDwgeS5wb3M7CiAgICB9KTsKCiAgICB2ZWN0b3I8aW50PiBwb3ByemVkbmllKG4gKyAxLCAwKTsKICAgIHZlY3RvcjxpbnQ+IHBrKG4gKyAxLCAwKTsKICAgIHZlY3RvcjxpbnQ+IHBrMShuICsgMSwgMCk7CgogICAgLy8gV3l6bmFjemFteSBwb3RyemVibmUgd2N6ZcWbbmllanN6ZSB3eXN0xIVwaWVuaWEuCiAgICBpbnQgc3RhcnQgPSAwOwoKICAgIHdoaWxlIChzdGFydCA8IG4pIHsKICAgICAgICBpbnQga29uaWVjID0gc3RhcnQgKyAxOwoKICAgICAgICB3aGlsZSAoa29uaWVjIDwgbiAmJgogICAgICAgICAgICAgICB3eXN0W2tvbmllY10ueCA9PSB3eXN0W3N0YXJ0XS54KSB7CiAgICAgICAgICAgIGtvbmllYysrOwogICAgICAgIH0KCiAgICAgICAgZm9yIChpbnQgaiA9IHN0YXJ0OyBqIDwga29uaWVjOyBqKyspIHsKICAgICAgICAgICAgaW50IGkgPSB3eXN0W2pdLnBvczsKICAgICAgICAgICAgaW50IHQgPSBqIC0gc3RhcnQgKyAxOwoKICAgICAgICAgICAgLy8gUG9wcnplZG5pZSB3eXN0xIVwaWVuaWUgcF8odC0xKS4KICAgICAgICAgICAgaWYgKHQgPj0gMikKICAgICAgICAgICAgICAgIHBvcHJ6ZWRuaWVbaV0gPSB3eXN0W2ogLSAxXS5wb3M7CgogICAgICAgICAgICAvLyBwXyh0LWspLgogICAgICAgICAgICBpZiAodCA+IGspCiAgICAgICAgICAgICAgICBwa1tpXSA9IHd5c3RbaiAtIGtdLnBvczsKCiAgICAgICAgICAgIC8vIHBfKHQtay0xKS4KICAgICAgICAgICAgaWYgKHQgPiBrICsgMSkKICAgICAgICAgICAgICAgIHBrMVtpXSA9IHd5c3RbaiAtIGsgLSAxXS5wb3M7CiAgICAgICAgfQoKICAgICAgICBzdGFydCA9IGtvbmllYzsKICAgIH0KCiAgICB2ZWN0b3I8UXVlcnk+IHphcChxKTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IHE7IGkrKykgewogICAgICAgIGNpbiA+PiB6YXBbaV0ubCA+PiB6YXBbaV0ucjsKICAgICAgICB6YXBbaV0uaWQgPSBpOwogICAgfQoKICAgIHNvcnQoemFwLmJlZ2luKCksIHphcC5lbmQoKSwgW10oUXVlcnkgeCwgUXVlcnkgeSkgewogICAgICAgIHJldHVybiB4LnIgPCB5LnI7CiAgICB9KTsKCiAgICBGZW53aWNrIGZlbndpY2sobik7CiAgICB2ZWN0b3I8bGw+IHd5bmlrKHEpOwoKICAgIGludCBqID0gMDsKCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICAvLyBVc3V3YW15IHdrxYJhZCB6IGxld3ljaCBrb8WEY8Ozdywga3TDs3JlCiAgICAgICAgLy8gcHJ6ZXN0YcWCeSBzcGXFgm5pYcSHIHdhcnVuZWsuCiAgICAgICAgZmVud2ljay5kb2Rhal9wcnplZHppYWwoCiAgICAgICAgICAgIHBrMVtpXSArIDEsIHBrW2ldLCAtYVtpXQogICAgICAgICk7CgogICAgICAgIC8vIERvZGFqZW15IHdrxYJhZCBuYSBub3d5Y2ggbGV3eWNoIGtvxYRjYWNoLgogICAgICAgIGZlbndpY2suZG9kYWpfcHJ6ZWR6aWFsKAogICAgICAgICAgICBwb3ByemVkbmllW2ldICsgMSwgaSwgYVtpXQogICAgICAgICk7CgogICAgICAgIC8vIE9kcG93aWFkYW15IG5hIHphcHl0YW5pYSB6IHByYXd5bSBrb8WEY2VtIGkuCiAgICAgICAgd2hpbGUgKGogPCBxICYmIHphcFtqXS5yID09IGkpIHsKICAgICAgICAgICAgd3luaWtbemFwW2pdLmlkXSA9CiAgICAgICAgICAgICAgICBmZW53aWNrLm9kY3p5dGFqKHphcFtqXS5sKTsKICAgICAgICAgICAgaisrOwogICAgICAgIH0KICAgIH0KCiAgICBmb3IgKGludCBpID0gMDsgaSA8IHE7IGkrKykKICAgICAgICBjb3V0IDw8IHd5bmlrW2ldIDw8ICdcbic7CgogICAgcmV0dXJuIDA7Cn0K