Pagini recente » Cod sursa (job #1552201) | Cod sursa (job #1225317) | Cod sursa (job #2327966) | Cod sursa (job #2968258) | Cod sursa (job #2311469)
#include<fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
long n, m, a[15001], aib[15001];
int printAIB(int stop_poz)
{
int sum = 0 ;
while(stop_poz > 0){
sum += aib[stop_poz];
stop_poz -= stop_poz & (-stop_poz);
}
return sum;
}
void updateAIB(int start_poz, int val_sub)
{
for(int i = start_poz ; i <= n ; i += i & (-i)){
aib[i] -= val_sub;
}
}
void buildAIB()
{
for(int i = 1 ; i <= n ; i++){
aib[i] = a[i];
}
for(int i = 1 ; i <= n ; i++){
if(i + (i & (-i)) <= n){
aib[i + (i & (-i))] += aib[i];
}
}
}
int main()
{
int cod, p, q;
f>>n>>m;
for(int i = 1 ; i <= n ; i++){
f>>a[i];
}
buildAIB();
for(int i = 1 ; i <= m ; i++){
f>>cod>>p>>q;
if(cod == 0)
updateAIB(p, q);
if(cod == 1)
g<< printAIB(q) - printAIB(p - 1) << '\n';
}
return 0;
}