Pagini recente » Cod sursa (job #2511631) | Cod sursa (job #1574419) | Cod sursa (job #1567591) | Cod sursa (job #3277060) | Cod sursa (job #604437)
Cod sursa(job #604437)
#include <fstream>
#define max_n 15001
using namespace std;
int v[max_n];
int i,n,m,x,c,a,b,s;
ifstream in("datorii.in");
ofstream out("datorii.out");
int bitul(int x) {
return ((-x)&x);
}
void adauga(int x,int p) {
while (p<=n) {
v[p]+=x;
p+=bitul(p);
}
}
void scade(int x,int p) {
while (p<=n) {
v[p]-=x;
p+=bitul(p);
}
}
int suma(int a) {
int r=0;
while (a>0) {
r+=v[a];
a-=bitul(a);
}
return r;
}
int main () {
in >> n >> m;
for (i=1; i<=n; i++) {
in >>x;
adauga(x,i);
}
for (i=1; i<=m; i++) {
in >> c >> a >> b;
if (c==0)
scade(b,a);
else {
s=suma(b)-suma(a-1);
out << s << '\n';
}
}
return 0;
}