Pagini recente » Cod sursa (job #84242) | Cod sursa (job #1654155) | Cod sursa (job #417557) | Cod sursa (job #424611) | Cod sursa (job #1541955)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("distincte.in");
ofstream g("distincte.out");
struct du{int st, dr, poz;}
a[100011];
int v[100011],n,m,k,Rez[100011],vv[100011],i,j,AIB[100011],x;
void update(int poz, long long c)
{
if (poz==0) return;
int i;
for(i=poz;i<=n; i+=(i&(-i)))
{
AIB[i]+=c;
}
}
long long query(int x)
{
int i;
long long val=0;
for(i=x;i>0;i-=(i&(-i)))
{
val+=AIB[i];
}
return val;
}
bool cmp(du a, du b)
{
return a.dr < b.dr;
}
int main()
{
f>>n>>k>>m;
for(i=1;i<=n;i++)
f>>v[i];
for (int i=1; i<=m; ++i)
{
f>>a[i].st>>a[i].dr;
a[i].poz=i;
}
sort(a+1, a+m+1, cmp);
int i,j;
for (i=1,j=1;i<= m;++i) {
while(j<=a[i].dr) {
update (vv[v[j]],-v[j]);
update (j,v[j]);
vv[v[j]]=j;
j++;
}
Rez[a[i].poz] = (query (a[i].dr) - query (a[i].st - 1))%666013;
}
for (i=1; i<=m; ++i)
g<<Rez[i]<<'\n';
return 0;
}