Nu aveti permisiuni pentru a descarca fisierul grader_test10.ok
Cod sursa(job #1870199)
| Utilizator | Data | 6 februarie 2017 14:40:42 | |
|---|---|---|---|
| Problema | Datorii | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.74 kb |
#include <fstream>
#define lim 15010
#define zeros(x) ((x ^ (x - 1) & x))
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int aib[lim], n, m, x, y;
void add(int poz, int val){
for (int i = poz; i <= n; i += zeros(i))
aib[i] += val;
}
int query(int poz){
int s = 0;
for (int i = poz; i >= 1; i -= zeros(i))
s += aib[i];
return s;
}
int main()
{
fin >> n >> m;
for (int i = 1; i <= n; i++){
fin >> x;
add(i, x);
}
while (m--){
bool p;
fin >> p;
fin >> x >> y;
if (p == 0)
add(x, -y);
else
fout << query(y) - query(x - 1) << '\n';
}
return 0;
}
