Pagini recente » Cod sursa (job #1313249) | Cod sursa (job #3193238) | Profil ionanghelina | Cod sursa (job #984962) | Cod sursa (job #3259328)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("distincte.in");
ofstream fout("distincte.out");
//set<int> tree[400001];
long long sum[400001];
int a[100001];
/*
void buildTree(int left, int right, int currentNode) {
if (left == right) {
tree[currentNode].insert(a[left]);
sum[currentNode] = a[left];
return;
}
buildTree(left, (left + right) / 2, currentNode * 2);
buildTree((left + right) / 2 + 1, right, currentNode * 2 + 1);
for (set<int>::iterator it = tree[currentNode * 2].begin(); it != tree[currentNode * 2].end(); ++it) {
if (tree[currentNode].count(*it) == 0) {
sum[currentNode] += *it;
}
tree[currentNode].insert(*it);
}
for (set<int>::iterator it = tree[currentNode * 2 + 1].begin(); it != tree[currentNode * 2 + 1].end(); ++it) {
if (tree[currentNode].count(*it) == 0) {
sum[currentNode] += *it;
}
tree[currentNode].insert(*it);
}
}*/
/*long long query(int left, int right, int currentNode, int startPos, int endPos, bitset<100001> &fr) {
if (right < startPos || left > endPos) {
return 0;
} else if (startPos <= left && right <= endPos) {
long long s = 0;
for (int i = left; i <= right; ++i) {
if (fr[a[i]] == 0) {
s += a[i];
}
fr[a[i]] = 1;
}
return s;
}
return query(left, (left + right) / 2, currentNode * 2, startPos, endPos, fr) + query((left + right) / 2 + 1, right, currentNode * 2 + 1, startPos, endPos, fr);
}*/
int main() {
int n, k, m;
fin >> n >> k >> m;
for (int i = 1; i <= n; ++i) {
fin >> a[i];
}
// buildTree(1, n, 1);
for (int i = 1; i <= m; ++i) {
int startPos, endPos;
fin >> startPos >> endPos;
bitset<100001> fr = {0};
long long s = 0;
for (int j = startPos; j <= endPos; ++j) {
if (fr[a[j]] == 0) {
s += a[j];
}
fr[a[j]] = 1;
}
fout << s << '\n';
// fout << query(1, n, 1, startPos, endPos, fr) << '\n';
}
return 0;
}