Cod sursa(job #2112601)
| Utilizator | Data | 23 ianuarie 2018 18:03:29 | |
|---|---|---|---|
| Problema | Datorii | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.64 kb |
#include <bits/stdc++.h>
#define inc(x) ((x^(x-1))&x) ///2^k
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n,m,aib[15005];
void adauga(int val,int k) {
int i;
for (i=k;i<=n;i+=inc(i))
aib[i]+=val;
}
int suma(int k) {
int i,s=0;
for (i=k;i>=1;i-=inc(i))
s+=aib[i];
return s;
}
int main() {
int i,x,y,p;
f>>n>>m;
for (i=1;i<=n;i++) {
f>>x;
adauga(x,i);
}
for (i=1;i<=m;i++) {
f>>p>>x>>y;
if (p==1)
g<<suma(y)-suma(x-1)<<'\n';
else adauga(-y,x);
}
return 0;
}
