Cod sursa(job #1210527)

Utilizator fromzerotoheroFROM ZERO fromzerotohero Data 20 iulie 2014 12:36:47
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <iostream>
#include <fstream>
using namespace std;

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

int n,m,i,t,v,p,q;
bool tip;
int A[nmax],S[nmax];

void achitare(int t, int v) {
    
    while (t <= n) {
        
        S[t] += v;
        
        t += (t^(t-1))&t;
        
    }
    
}

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

int main() {
    
    in >> n >> m;
    
    for (i=1; i<=n; i++)
        in >> A[i],
        achitare(i, A[i]);
    
    for (i=1; i<=m; i++) {
        
        in >> tip;
        
        if (tip) {
            
            // interogare
            
            in >> p >> q;
            
            out << interogare(q) - interogare(p-1) << "\n";
            
            
        } else {
            
            // achitare
            
            in >> t >> v;
            
            achitare(t, -v);
            
        }
        
    }
    
    return 0;
}