Pagini recente » Cod sursa (job #1181363) | Cod sursa (job #1222060) | Cod sursa (job #1997709) | Cod sursa (job #1926485) | Cod sursa (job #767720)
Cod sursa(job #767720)
#include<fstream>
#define NN 15005
using namespace std;
ofstream out("datorii.out");
int arb[NN],n,m;
void read();
void adauga(int indice,int element);
int raspuns(int element);
int main()
{
read();
return 0;
}
void read()
{
ifstream in("datorii.in");
in>>n>>m;
for(int x,i=1;i<=n;i++)
{
in>>x;
adauga(i,x);
}
for(int tip, i=1;i<=m;i++)
{
in>>tip;
if(tip==0)
{
int x,t;
in>>t>>x;
adauga(t,-x);
}
else
{
int x,y;
in>>x>>y;
out<<raspuns(y)-raspuns(x-1)<<'\n';
}
}
}
void adauga(int indice,int element)
{
int pozbit=0;
while(indice <= n)
{
arb[indice]+=element;
while(!(indice & (1<<pozbit) ) )
pozbit++;
indice += (1<<pozbit );
pozbit+=1;
}
}
int raspuns (int indice)
{
int suma=0,pozbit=0;
while(indice > 0)
{
suma+=arb[indice];
while(!(indice & (1<<pozbit ) ) )
pozbit++;
indice-=1<<pozbit;
pozbit+=1;
}
return suma;
}