Pagini recente » Cod sursa (job #1606118) | Cod sursa (job #289161) | Cod sursa (job #407234) | Cod sursa (job #2373563) | Cod sursa (job #1948512)
#include <cstdio>
#define LMAX 15005
using namespace std;
FILE *fin=fopen("datorii.in","r");
FILE *fout=fopen("datorii.out","w");
int aib[LMAX];
int n;
void update(int poz, int a, int tip);
int query(int poz);
int main()
{
int i;
int a;
int m;
int c;
int x, y;
fscanf(fin,"%d %d",&n,&m);
for (i=1;i<=n;i++)
{
fscanf(fin,"%d",&a);
update(i,a,1 );
}
for (i=1;i<=m;i++)
{
fscanf(fin,"%d %d %d",&c,&x,&y);
switch (c)
{
case 0:
{
update(x,y,2);
break;
}
case 1:
{
fprintf(fout,"%d\n",(query(y)-query(x-1)));
break;
}
}
}
return 0;
}
void update(int poz, int a, int tip)
{
int i;
for (i=poz;i<=n;i+=(i&(-1*i)))
if (tip==2)
aib[i]-=a; else aib[i]+=a;
}
int query(int poz)
{
int s=0;
int i;
for (i=poz;i>=1;i-=(i&(-1*i)))
s+=aib[i];
return s;
}