Pagini recente » Borderou de evaluare (job #565537) | Cod sursa (job #3246577) | Cod sursa (job #533572) | Cod sursa (job #2064521) | Cod sursa (job #2121207)
#include <fstream>
#define zeros(x) ((x^(x-1))&x)
using namespace std;
ifstream cin("datorii.in");
ofstream cout("datorii.out");
int nr, operatii, aib[16000], total, val, tip, zi, z1, z2, x1, x2;
void adauga(int ziua, int val)
{
while(ziua <= nr)
{
aib[ziua] += val;
ziua += zeros(ziua);
}
}
int intreaba(int ziua)
{
int total = 0;
while(ziua > 0)
{
total += aib[ziua];
ziua -= zeros(ziua);
}
return total;
}
int main()
{
cin >> nr >> operatii;
for(int i=1; i <= nr; i++)
{
cin >> val;
adauga(i, val);
}
for(int yy=1; yy <= operatii; yy++)
{
cin >> tip;
if(tip == 0)
{
cin >> zi >> val;
adauga(zi, -val);
}
else
{
cin >> z1 >> z2;
x1 = intreaba(z1-1);
x2 = intreaba(z2);
cout << x2-x1 << '\n';
}
}
}