Pagini recente » Cod sursa (job #3273931) | Cod sursa (job #2854409) | Cod sursa (job #256800) | Cod sursa (job #2268376) | Cod sursa (job #89950)
Cod sursa(job #89950)
#include<stdio.h>
int arb[32768], val, unde;
//int s[16384];
void adauga(int poz, int st, int dr)
{
if ((unde>=st) && (unde<=dr))
arb[poz]+=val;
if (st==dr) return;
adauga(poz*2, st, (st+dr)/2);
adauga(poz*2+1, (st+dr)/2+1, dr);
return;
}
int intreaba(int poz, int st, int dr)
{
if ((unde>dr) || (val<st))
return 0;
if ((unde<=st) &&(dr<=val))
return arb[poz];
return intreaba(poz*2, st, (st+dr)/2) + intreaba(poz*2+1, (st+dr)/2+1, dr);
}
int main()
{
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
int n, m, tip, i;
scanf("%d%d", &n, &m);
for (unde=1; unde<=n; unde++)
{
scanf("%d", &val);
adauga(1, 1, n);
}
for (i=1; i<=m; i++)
{
scanf("%d%d%d", &tip, &unde, &val);
if (tip==0)
{
val*=-1;
adauga(1, 1, n);
}
else
{
printf("%d\n", intreaba(1, 1, n));
}
}
}