Pagini recente » Cod sursa (job #143838) | Cod sursa (job #2334295) | Cod sursa (job #1991415) | Cod sursa (job #1671818) | Cod sursa (job #2464)
Cod sursa(job #2464)
# include <stdio.h>
const int MAXN=15000;
int tree[MAXN+1]={0},n,m;
int suma(int x)
{
int sol=0;
while (x)
{
sol+=tree[x];
x-=(x&(x-1))^x;
}
return sol;
}
void update(int val, int poz,int first)
{
int q=poz;
tree[poz]-=val*(first);
while (q+((q&(q-1))^q)<=n)
{
q=q+((q&(q-1))^q);
tree[q]-=val*(first);
}
}
int main()
{
int i,a,cod,b;
FILE *f=fopen("datorii.in","r");
FILE *g=fopen("datorii.out","w");
fscanf(f,"%d%d",&n,&m);
for (i=1;i<=n;i++)
{
fscanf(f,"%d",&a);
update(a,i,-1);
}
for (i=1;i<=m;i++)
{
fscanf(f,"%d%d%d",&cod,&a,&b);
if (cod==0) update(b,a,1);
else fprintf(g,"%d\n",suma(b)-suma(a-1));
}
fcloseall();
return 0;
}