Cod sursa(job #1248178)

Utilizator andreas.chelsauAndreas Chelsau andreas.chelsau Data 24 octombrie 2014 19:13:36
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <stdio.h>
using namespace std;
 
int n,m,sum[15005];
 
 
void update(int idx ,int val){
    for(; idx <= n; idx += (idx & -idx)){
        sum[idx] += val;
    }
}
int query(int idx){
    int s = 0;
    for(; idx > 0; idx -= (idx & -idx)){
        s += sum[idx];
    }
    return s;
}
void query2(int start,int end){
    printf("%d\n", query(end) - query(start));
}
int main(){
	freopen("datorii.in", "r", stdin);
	freopen("datorii.out", "w", stdout);
    scanf("%d%d",&n,&m);
    int elt,j;
    for(int i = 1; i <= n; i++){
        scanf("%d",&elt);
        update(i,elt);
    }
    while(m--){
        int cmd,elt,x;
        scanf("%d%d",&cmd,&elt);
        switch(cmd){
            case 0: scanf("%d",&x); update(elt,-1 * x); break;
            case 1: scanf("%d",&x);  query2(elt - 1,x); break;
        }
    }
 
    return 0;
}