Pagini recente » Cod sursa (job #1467921) | Cod sursa (job #211355) | Cod sursa (job #2405142) | Cod sursa (job #1491206) | Cod sursa (job #943454)
Cod sursa(job #943454)
#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 )
{
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;
}