Pagini recente » Cod sursa (job #668920) | Cod sursa (job #2537651) | Cod sursa (job #1166411) | Cod sursa (job #2232274) | Cod sursa (job #2367317)
#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();
}
}