Pagini recente » Cod sursa (job #2720636) | Cod sursa (job #262824) | Cod sursa (job #1449558) | Cod sursa (job #3168834) | Cod sursa (job #2978053)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
///#include <tryhardmode>
///#include <GODMODE::ON>
///#include <PRACTICE>
using namespace std;
ifstream fin ("distincte.in");
ofstream fout ("distincte.out");
const int NMAX=1e5+5;
vector<pair<int,int>>qquery[NMAX];
long long rez[NMAX];
int last[NMAX];
int v[NMAX];
long long aib[NMAX];
int n;
int lsb(int x)
{
return x&(-x);
}
void update(int p,int val)
{
while(p<=n)
{
aib[p]+=val;
p+=lsb(p);
}
}
long long query(int p)
{
long long s=0;
while(p>0)
{
s+=aib[p];
p-=lsb(p);
}
return s;
}
long long solve_q(int st,int dr)
{
return query(dr)-query(st-1);
}
int main()
{
int i,j,m,k,x,y;
fin>>n>>k>>m;
for(i=1;i<=n;i++)
{
fin>>v[i];
update(i,v[i]);
}
for(i=1;i<=m;i++)
{
fin>>x>>y;
qquery[y].push_back(make_pair(x,i));
}
for(i=1;i<=n;i++)
{
if(last[v[i]])
update(last[v[i]],-v[i]);
last[v[i]]=i;
for(auto j:qquery[i])
rez[j.second]=solve_q(j.first,i);
}
for(i=1;i<=m;i++)
fout<<rez[i]<<"\n";
return 0;
}