Pagini recente » Cod sursa (job #1146283) | Cod sursa (job #892270) | Cod sursa (job #1945984) | Cod sursa (job #47829) | Cod sursa (job #418200)
Cod sursa(job #418200)
#include <cstdio>
using namespace std;
FILE *f=fopen("datorii.in","r");
FILE *g=fopen("datorii.out","w");
#define nmax 15010
#define f(x) (x^(x-1)&x)
//#define A (A-1)
int n,m;
int A[nmax];
void add(int in,int x,bool ok)
{
for(int i=in;ok&&i<=n;i+=f(i))
A[i]+=x;
for(int i=in;!ok&&i<=n;i+=f(i))
A[i]-=x;
}
int compute(int x)
{
int sum=0,i;
for(i=x;i>0;i-=f(i))
sum+=A[i];
return sum;
}
void solve()
{
bool ok;
int x,y;
int i;
for(i=1;i<=m;i++)
{
fscanf(f,"%d %d %d",&ok,&x,&y);
if(!ok)
add(x,y,0);
else
fprintf(g,"%d\n",(compute(y)-compute(x-1)));
}
}
int main()
{
int i,x;
fscanf(f,"%d %d",&n,&m);
for(i=1;i<=n;i++)
{
fscanf(f,"%d",&x);
add(i,x,1);
}
solve();
return 0;
}