Cod sursa(job #3142549)

Utilizator David8406Marian David David8406 Data 22 iulie 2023 14:09:40
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
	#include <iostream>
	#include <algorithm>
	#include <fstream>
	using namespace std;
	ifstream fin("datorii.in");
	ofstream fout("datorii.out");
	int n, m, tip, x, y, aib[100005];
	void update(int poz, int val) {
		while (poz <= n) {
			aib[poz] += val;
			poz = poz + (poz & (poz ^ (poz - 1)));
		}
	}
	int query(int poz) {
		int rez = 0;
		while (poz > 0) {
			rez += aib[poz];
			poz = poz - (poz & (poz ^ (poz - 1)));
		}
		return rez;
	}
	int main() {
		fin >> n >> m;
		for (int i = 1; i <= n; i++) {
			fin >> x;
			update(i, x);
		}
		for (int i = 1; i <= m; i++) {
			fin >> tip >> x >> y;
			if (tip == 0) {
				y *= -1;
				update(x, y);
			}
			else if (tip==1){
				fout<<query(y)-query(x-1)<<"\n";
			}
		}
	}