Pagini recente » Cod sursa (job #538617) | Cod sursa (job #2883486) | Cod sursa (job #400256) | Cod sursa (job #1892096) | Cod sursa (job #1807522)
#include <fstream>
#define UB(x) x&(-x)
using namespace std;
int i,j,N,m,n,w,a,b,cerinta;
int AIB[15006];
int suma(int poz, int val) {
for(int i = poz; i <= n; i += UB(i))
AIB[i] += val;
return 0;
}
int suma1(int poz, int val) {
for(int i = poz; i <= n; i += UB(i))
AIB[i] -= val;
return 0;
}
int query(int poz)
{
int sumin = 0;
for(int i = poz; i >= 1; i -= UB(i))
sumin += AIB[i];
return sumin;
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d %d",&n,&m);
for(i=1;i<=n;i++)
{
scanf("%d",&w); suma(i,w);
}
for(i=1;i<=m;i++)
{
scanf("%d",&cerinta);
if(cerinta==0)
{
scanf("%d %d",&a,&b);
suma1(a,b);
}
else if(cerinta==1)
{
scanf("%d %d",&a,&b);
printf("%d \n",query(b)-query(a-1));
}
}
return 0;
}