Cod sursa(job #1224405)

Utilizator andreiblaj17Andrei Blaj andreiblaj17 Data 30 august 2014 21:36:22
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>
#include <iostream>
using namespace std;

#define nmax 15001
ifstream in("datorii.in");
ofstream out("datorii.out");

int n,m;
int S[nmax];

int i,x,tip,t,v,p,q;

void update(int p, int x) {
    
    while (p <= n){
        
        S[p] += x;
        
        p += (p^(p-1)) & p;
    
    }
}

int query(int p) {
    
    int s = 0;
    
    while (p > 0) {
        
        s += S[p];
        
        p -= (p^(p-1)) & p;
        
    }
    
    return s;
    
}

int main() {
    
    in >> n >> m;
    
    for (i = 1; i <= n; i++){
        in >> x,
        update(i, x);
    }
    for (i = 1; i <= m; i++) {
        
        in >> tip;
        
        if (tip == 0) {
            
            in >> t >> v;
            
            update(t, -v);
            
        } else {
            
            in >> p >> q;
            
            out << query(q) - query(p-1) << "\n";
            
        }
        
    }
    
    return 0;
}