Pagini recente » Cod sursa (job #1130965) | Cod sursa (job #324422) | Cod sursa (job #742629) | Cod sursa (job #2534146) | Cod sursa (job #1619478)
#include <fstream>
#include <algorithm>
#define zeros(x) ((x^(x-1))&x)
using namespace std;
ifstream f("distincte.in");
ofstream g("distincte.out");
struct intr{int x,y,z;};
intr v[100001];
int a[100001],mod=666013,u[100001],n,k,m,i,j,s;
long long aib[100001],ras[100001];
bool cmp(intr a,intr b)
{
return (a.y<b.y);
}
void update(int poz,int val)
{
int j=0;
for (j=poz;j<=n;j+=zeros(j))
aib[j]+=val;
}
long long query(int poz)
{
int j=0;
long long sum=0;
for (j=poz;j>=1;j-=zeros(j))
sum+=aib[j];
return sum;
}
int main()
{
f>>n>>k>>m;
for (i=1;i<=n;i++)
f>>a[i],u[a[i]]=n+1;
for (i=1;i<=m;i++)
{
f>>v[i].x>>v[i].y;
v[i].z=i;
}
j=1;
sort(v+1,v+m+1,cmp);
for (i=1;i<=m;i++)
{
while(j<=v[i].y)
update(u[a[j]],-a[j]),update(j,a[j]),u[a[j]]=j,j++;
ras[v[i].z]=query(v[i].y)-query(v[i].x-1);
}
for (i=1;i<=m;i++)
g<<ras[i]%mod<<'\n';
return 0;
}