Pagini recente » Cod sursa (job #3140026) | Cod sursa (job #459652) | Cod sursa (job #1011362) | Borderou de evaluare (job #2772041) | Cod sursa (job #2912570)
#include <bits/stdc++.h>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
const int NMAX = 15005;
int N, M;
int aib[NMAX];
int query(int poz){
int rasp = 0;
while (poz) {
// sa taiem cate un bit cate un bit dintre cei mai nesemnificativi
rasp+=aib[poz];
poz-= poz & (-poz);
}
return rasp;
}
void update(int val,int poz)
{
while (poz <= N)
{
aib[poz] += val;
poz += poz & (-poz);
}
}
int main()
{
f >> N >> M;
int num;
for (int i = 1 ; i <= N ; ++ i)
{
f >> num;
update(num, i);
}
int tip, a, b;
while (M --)
{
f >> tip >> a >> b;
if (tip == 0)
{
update(-b, a);
}
else
{
g << query(b) - query(a - 1) << "\n";
}
}
return 0;
}