Pagini recente » Cod sursa (job #1596721) | Cod sursa (job #2477033) | Cod sursa (job #578440) | Cod sursa (job #2445912) | Cod sursa (job #687097)
Cod sursa(job #687097)
#include <fstream>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
const int N=15010;
int n,m;
int aib[N],s[N];
void scade(int poz,int val){
if(poz>n)
return;
aib[poz]-=val;
poz+=(poz-(poz&(poz-1)));
scade(poz,val);
}
int kterm(int poz){
int s;
if(poz==0)
return 0;
s=aib[poz];
poz=(poz&(poz-1));
s+=kterm(poz);
return s;
}
int abs(int x){
if(x<0)
return -x;
return x;
}
int suma(int a,int b){
return abs(kterm(b)-kterm(a-1));
}
int main(){
int i;
in>>n>>m;
for(i=1;i<=n;++i){
in>>s[i];
s[i]+=s[i-1];
aib[i]=s[i]-s[(i&(i-1))];
}
int op,a,b;
for(i=1;i<=m;++i){
in>>op>>a>>b;
if(op){
out<<suma(a,b)<<'\n';
continue;
}
scade(a,b);
}
return 0;
}