Pagini recente » Cod sursa (job #75972) | Cod sursa (job #2415136) | Cod sursa (job #201674) | Cod sursa (job #65797) | Cod sursa (job #3348982)
#include <bits/stdc++.h>
#define int long long
using namespace std;
ifstream f("distincte.in");
ofstream g("distincte.out");
const int mod=666013;
int v[100009], aib[100009], last[100009], n;
int ans[100009];
void update (int poz, int add)
{
for (int i=poz; i<=n; i+=i&-i)
aib[i]+=add;
}
int query (int poz)
{
int ans=0;
for (int i=poz; i>=1; i-=i&-i)
ans+=aib[i];
return ans;
}
struct elem
{
int l, r, idx;
bool operator < (const elem & other) const
{
return (r<other.r|| (r==other.r && l<other.l));
}
};
elem q[100009];
signed main ()
{
int k,t;
f >> n >> k >> t;
for (int i=1; i<=n; i++)
{
f >> v[i];
update (i, v[i]);
}
for (int i=1; i<=t; i++)
f >> q[i].l >> q[i].r, q[i].idx=i;
int dr=1;
for (int i=1; i<=t; i++)
{
while (dr<=q[i].r)
{
if (last[v[dr]])
update (last[v[dr]], -v[dr]);
last[v[dr]]=dr;
dr++;
}
ans[q[i].idx]=(query (q[i].r)-query (q[i].l-1)+mod)%mod;
}
for (int i=1; i<=t; i++)
g << ans[i]<<'\n';
}