Pagini recente » Cod sursa (job #1582006) | Cod sursa (job #1586231) | Cod sursa (job #2663849) | Cod sursa (job #2756699)
#include <iostream>
#include <fstream>
const int N=15001;
std::ifstream in("datorii.in");
std::ofstream out("datorii.out");
/// suma de la parent(i) la i-1
int AIB[N+2];
int suma(int n, int poz)
{
int s=0;
for(int contor=poz+1; contor>=1; contor-=contor&(-contor))
{
s+=AIB[contor];
}
return s;
}
void update(int n, int poz, int dif)
{
for(int contor=poz+1; contor<n+2; contor+=contor&(-contor))
{
AIB[contor]+=dif;
}
}
int main()
{
int n, m, x, qw, we;
in>>n>>m;
for(int i=1; i<=n; i++)
{
in>>x;
update(n, i, x);
}
for(int i=1; i<=m; i++)
{
bool b;
in>>b;
if(b==0)
{
in>>qw>>we;
update(n, qw, -we);
}
else
{
in>>qw>>we;
out<<suma(n, we)-suma(n, qw-1)<<"\n";
}
}
}