Pagini recente » Cod sursa (job #633420) | Cod sursa (job #1094203) | Cod sursa (job #1947398) | Cod sursa (job #1146953) | Cod sursa (job #943455)
Cod sursa(job #943455)
#include <fstream>
using namespace std;
ifstream cin("datorii.in");
ofstream cout("datorii.out");
int a[15005];
int n, m;
void adauga(int poz, int val)
{
while(poz<=n)
{
a[poz] += val;
poz += (poz^(poz-1)) & poz;
}
}
void achita(int poz, int val)
{
while(poz<=n)
{
a[poz] -= val;
poz += (poz^(poz-1)) & poz;
}
}
int cat(int poz)
{
int sum=0;
while( poz > 0 )
{
sum += a[poz];
poz -= (poz^(poz-1)) & poz;
}
return sum;
}
int main()
{
cin>>n>>m;
for(int i = 1; i <= n ; ++ i)
{
int x;
cin>>x;
adauga(i, x);
}
for( int i = 1 ; i <= n ; ++ i)
{
bool tip;
cin>>tip;
if(tip == false)
{
int x, poz;
cin>>poz>>x;
achita(poz, x);
}
else
{
int p, q;
cin>>p>>q;
cout<<cat(q)-cat(p-1)<<"\n";
}
}
return 0;
}