Pagini recente » Cod sursa (job #2915210) | Cod sursa (job #1946526) | Cod sursa (job #344461) | Cod sursa (job #459803) | Cod sursa (job #1425646)
# include <cstdio>
# define ub(x) (x&(-x))
using namespace std;
int n,m,x,y,OP;
int aib[15005];
inline void update(int x,int poz)
{
int i;
for (i = poz; i <= n; i += ub(i))
aib[i] += x;
}
inline void down(int x, int poz)
{
int i;
for (i = poz; i <= n; i += ub(i))
aib[i] -= x;
}
inline int suma (int x)
{
int i, sum = 0;
for (i = x; i > 0; i -= ub(i)) sum += aib[i];
return sum;
}
int main ()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d%d",&n,&m);
for (int i = 1; i <= n; i++)
{
scanf("%d",&x);
update(x,i);
}
for (int i = 1; i <= m; i++)
{
scanf("%d",&OP);
if (OP == 0)
{
scanf("%d%d",&x,&y);
down(y,x);
}
if (OP == 1)
{
scanf("%d%d",&x,&y);
printf("%d\n",suma(y) - suma(x-1));
}
}
return 0;
}