Pagini recente » Cod sursa (job #479797) | Cod sursa (job #2253992) | Cod sursa (job #546806) | Cod sursa (job #530588) | Cod sursa (job #1364290)
#include <iostream>
#include <fstream>
#include <unordered_map>
#include <vector>
#define mp make_pair
#define MAXN 100005
using namespace std;
typedef int var;
unordered_map<var, vector<var> >H;
ifstream fin("distincte.in");
ofstream fout("distincte.out");
var LOG[MAXN];
void build_log_table(var maxx) {
for(var i=2; i<=maxx; i++) {
LOG[i] = LOG[i/2] + 1;
}
}
var lower(vector<var> &V, var ind) {
var n = V.size();
var i = (1 << LOG[n]);
var poz = -1;
for(;i;i>>=1) {
if(poz+i<n && V[poz+i] <= ind) {
poz += i;
}
}
if(poz == -1) {
return -1;
}
return V[poz];
}
int main()
{
var n, k, val, q, a, b;
fin>>n>>k>>q;
build_log_table(n+1);
for(var i=1; i<=n; i++) {
fin>>val;
H[val].push_back(i);
if(H[val].size() == 1) {
//BEG.push_back(mp(val, ind));
}
}
while(q--) {
fin>>a>>b;
var sum = 0;
for(auto &p : H) {
var ind = lower(p.second, b);
if(ind >= a) {
sum += p.first;
}
}
fout<<sum<<'\n';
}
return 0;
}