Pagini recente » Cod sursa (job #2867435) | Cod sursa (job #310023) | Cod sursa (job #2796197) | Cod sursa (job #95867) | Cod sursa (job #3173014)
#include<fstream>
std::ifstream fin("datorii.in");
std::ofstream fout("datorii.out");
int n, m;
unsigned long long aib[15001];
int step(int n)
{
return n&(-n);
}
void update(unsigned long long val, int start)
{
int i=start;
while(i<=n)
{
aib[i]+=val;
i+=step(i);
}
}
void debt(unsigned long long val, int start)
{
int i=start;
while(i<=n)
{
aib[i]-=val;
i+=step(i);
}
}
unsigned long long query(int pos)
{
unsigned long long s=0;
while(pos>0)
{
s+=aib[pos];
pos-= step(pos);
}
return s;
}
void solve()
{
fin>>n>>m;
for(int index=1; index<=n; ++index)
{
unsigned long long val;
fin>>val;
update(val, index);
}
for(int index=0; index<m; ++index)
{
int q, a, b;
fin>>q>>a>>b;
if(!q)
debt(b, a);
else
fout<<(query(b)-query(a-1))<<'\n';
}
}
int main()
{
solve();
return 0;
}