Cod sursa(job #2367317)

Utilizator JohnnyTTache Radu Ioan JohnnyT Data 5 martie 2019 10:09:50
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <queue>
#include <vector>
#include <fstream>

#define zeros(x) ( (x ^ (x - 1)) & x )

using namespace std;

unsigned int n, m, u, v;
vector<int> aib;
bool op;

int main(){
    queue<int> res;
    fstream f("datorii.in", fstream::in);
    f >> n >> m;
    aib = vector<int>(n + 1);
    for(int i = 0; i < n; i++){
        int a;
        f >> a;
        for(int j = i + 1; j <= n; j += zeros(j)){
            aib[j] += a;
        }
    }
    for(int q = 0; q < m; q++){
        f >> op >> u >> v;
        if(!op){
            for(int x = u; x <= n; x += zeros(x)){
                aib[x] -= v;
            }
        }
        else{
            int suma = 0;
            for(int k = v; k; k -= zeros(k)){
                suma += aib[k];
            }
            for(int k = u-1; k; k -= zeros(k)){
                suma -= aib[k];
            }
            res.push(suma);
        }
    }
    f.close();
    f.open("datorii.out", fstream::out);
    while(res.size()){
        f << res.front() << endl;
        res.pop();
    }
}