Pagini recente » Cod sursa (job #245980) | Cod sursa (job #1018584) | Cod sursa (job #1300233) | Cod sursa (job #450675) | Cod sursa (job #578444)
Cod sursa(job #578444)
#include <fstream.h>
ifstream fin("datorii.in");
ofstream fout("datorii.out");
const int r=15001;
int n,m,i,k,x,y,T;
int v[4*r];
void update(int poz, int ls, int ld) {
int h;
if (ls==ld)
{
v[poz]+=y;
return;
}
h=(ls+ld)/2;
if (x<=h) update(2*poz, ls, h);
else update(2*poz+1, h+1, ld);
v[poz]=v[2*poz]+v[2*poz+1];
}
void find(int poz, int ls, int ld) {
int h;
if (x<=ls && ld<=y)
{
T+=v[poz];
return;
}
h=(ls+ld)/2;
if (x<=h) find(2*poz, ls, h);
if (y>h) find(2*poz+1, h+1, ld);
}
void citire(void) {
int i;
fin>>n>>m;
for (i=1;i<=n;i++)
{
fin>>y; x=i;
update(1,1,n);
}
}
int main() {
citire();
for (i=1;i<=m;i++)
{
fin>>k>>x>>y;
if (k)
{
T=0;
find(1,1,n);
fout<<T<<"\n";
}
else
{
y*=-1;
update(1,1,n);
}
}
return 0;
}