Pagini recente » Cod sursa (job #2089753) | Cod sursa (job #1841619) | Cod sursa (job #2963032) | Cod sursa (job #2358265) | Cod sursa (job #1238149)
#include <fstream>
#include <cstdlib>
using namespace std;
int AIB[15001] , n , m , op , ls , li , zi , suma;
inline int zero(int x)
{
return (x & (x - 1)) ^ x;
}
void Sub(int poz , int sum , bool op)
{
int i;
for(i = poz ; i <= n ; i += zero(i))
{
if(op == false)
AIB[i] -= sum;
else
AIB[i] += sum;
}
}
int Sum(int poz)
{
int s = 0 , i;
for(i = poz ; i > 0 ; i -= zero(i))
{
s += AIB[i];
}
return s;
}
int main()
{
ifstream in("datorii.in");
ofstream out("datorii.out");
int i;
in >> n >> m;
for(i = 1 ; i <= n ; i++)
{
in >> suma;
Sub(i , suma , true);
}
for(i = 0 ; i < m ; i++)
{
in >> op;
if(op == 0)
{
in >> zi >> suma;
Sub( zi , suma , false);
}
else
{
in >> li >> ls;
out << Sum(ls) - Sum(li - 1) << '\n';
}
}
in.close();
out.close();
exit(EXIT_SUCCESS);
}