Pagini recente » Cod sursa (job #244408) | Cod sursa (job #421724) | Cod sursa (job #1473589) | Cod sursa (job #2074739) | Cod sursa (job #1206479)
#include <cstdio>
#define filein "datorii.in"
#define fileout "datorii.out"
using namespace std;
FILE *in,*out;
int n,m;
int vx[15001];
int aib[15001];
void Update1(int poz,int val);
void Update2(int poz,int val);
int Query(int poz);
void ReadData();
int main()
{
in=fopen(filein,"r");
out=fopen(fileout,"w");
ReadData();
int i,cod,t,v,p,q;
for (i=1; i<=m; i++)
{
fscanf(in,"%d",&cod);
if (cod==0)
{
fscanf(in,"%d%d",&t,&v);
Update2(t,v);
}
if (cod==1)
{
fscanf(in,"%d%d",&p,&q);
fprintf(out,"%d\n",Query(q)-Query(p-1));
}
}
fclose(in);
fclose(out);
return 0;
}
void ReadData()
{
fscanf(in,"%d%d",&n,&m);
int i;
for (i=1; i<=n; i++)
{
fscanf(in,"%d",vx+i);
Update1(i,vx[i]);
}
}
void Update1(int poz,int val)
{
for (; poz<=n; poz+=poz&-poz)
aib[poz]+=val;
}
void Update2(int poz,int val)
{
for (; poz<=n; poz+=poz&-poz)
aib[poz]-=val;
}
int Query(int poz)
{
int s=0;
for (; poz; poz-=poz&-poz)
s+=aib[poz];
return s;
}