Pagini recente » Cod sursa (job #1490254) | Cod sursa (job #1210817) | Cod sursa (job #621045) | Cod sursa (job #2787813) | Cod sursa (job #2387702)
#include <fstream>
#define zeros(x) x&(x^(x-1))
using namespace std;
ifstream cin("datorii.in");
ofstream cout("datorii.out");
int nr, operatii, cost, aib[100004], tip, T, V, st, dr;
void aduna(int poz, int val)
{
aib[poz] += val;
poz += zeros(poz);
if(poz <= nr)
aduna(poz, val);
}
int CALC(int poz)
{
int total=0;
total += aib[poz];
poz -= zeros(poz);
if(poz > 0)
total += CALC(poz);
return total;
}
int main()
{
cin >> nr >> operatii;
for(int i=1; i <= nr; i++)
{
cin >> cost;
aduna(i, cost);
}
for(int i=1; i <= operatii; i++)
{
cin >> tip;
if(tip == 0)
{
cin >> T >> V;
aduna(T, -V);
}
else
if(tip == 1)
{
cin >> st >> dr;
cout << CALC(dr)-CALC(st-1) << '\n';
}
}
}