Cod sursa(job #725635)

Utilizator hunter_ionutzzzFarcas Ionut hunter_ionutzzz Data 26 martie 2012 21:21:13
Problema Arbori indexati binar Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<cstdio>
using namespace std;

int a[100005],n,frecv[100001];

void update (int poz,int val)
{
    while (poz<=n)
    {
        a[poz]+=val;
        poz+=(poz & (-poz));
    }
}

int query (int poz)
{
    int s=0;
    while (poz>0)
    {
        s+=a[poz];
        poz-=(poz & (-poz));
    }
    return s;
}
int main ()
{
    int m,tip,i,x,y;
    freopen("distincte2.in","r",stdin);
    freopen("distincte2.out","w",stdout);
    scanf("%d%d",&n,&m);
    for (i=1; i<=n; i++)
    {
        scanf("%d",&x);
		if (!frecv[x])
		{   frecv[x] = 1;
			update(i,1);
		}
    }
    for (i=1; i<=m; i++)
    {   scanf("%d%d",&x,&y);
        printf("%d\n",query(y)-query(x-1));
	}
    return 0;
}