Pagini recente » Cod sursa (job #1348037) | Cod sursa (job #2751065) | Cod sursa (job #2252492) | Cod sursa (job #1573490) | Cod sursa (job #797299)
Cod sursa(job #797299)
// Include
#include <fstream>
#include <algorithm>
using namespace std;
// Constante
const int sz = 15001;
// Functii
void update(int position, int value);
int query(int position);
// Variabile
ifstream in("datorii.in");
ofstream out("datorii.out");
int n, questions;
int tree[sz];
// Main
int main()
{
in >> n >> questions;
int value;
for(int i=1 ; i<=n ; ++i)
{
in >> value;
update(i, value);
}
int type, start, dif;
while(questions--)
{
in >> type >> start >> dif;
if(type)
out << query(min(start+dif, n)) - query(start-1) << '\n';
else
update(start, -dif);
}
in.close();
out.close();
return 0;
}
void update(int position, int value)
{
int power = 0;
while(position <= n)
{
tree[position] += value;
while(!(1<<power&position))
++power;
position += 1<<power++;
}
}
int query(int position)
{
int sum = 0;
int power = 0;
while(position)
{
sum += tree[position];
while(!(1<<power & position))
++power;
position -= 1<<power++;
}
return sum;
}