Pagini recente » Cod sursa (job #237181) | Cod sursa (job #1002754) | Cod sursa (job #1821047) | Cod sursa (job #2623721) | Cod sursa (job #3294991)
#include <fstream>
#include <vector>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
void actualizare(int poz, int val, vector <int> &aib)
{
int n = (int)aib.size() - 1;
while (poz <= n)
{
aib[poz] += val;
int p2 = poz & (-poz);
poz += p2;
}
}
int interogare(int poz, vector <int> &aib)
{
int sum = 0;
while (poz != 0)
{
sum += aib[poz];
int p2 = poz & (-poz);
poz -= p2;
}
return sum;
}
int main()
{
int n, m, elem, i, tip;
int poz, val, st, dr;
in >> n >> m;
vector <int> aib(n + 1, 0);
for(i = 1; i <= n; i++)
{
in >> elem;
actualizare(i, elem, aib);
}
for(i = 1; i <= m; i++)
{
in >> tip;
if(tip==0)
{
in >> poz >> val;
val=val*(-1);
actualizare(poz, val, aib);
}
else
{
in >> st >> dr;
out << interogare(dr, aib) - interogare(st - 1, aib) << "\n";
}
}
return 0;
}