Cod sursa(job #2502209)

Utilizator maria_bMaria Burdila maria_b Data 30 noiembrie 2019 14:43:31
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <stdio.h>
#include <bits/stdc++.h>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
 
int vv[1000], n, m, j, k;
 
int query(int n, int ll, int rr, int a, int b)
{
	if(a <= ll && rr <= b)
		return vv[n];
	int r = 0, middle = (ll+rr)/2;
	if(a <= middle)
		r += query(2*n, ll, middle, a, b);
	if(b > middle)
		r += query(2*n+1, middle+1, rr, a, b);
	return r;
}
 
void update(int n, int ll, int rr, int a, int b, int v)
{
	if(a <= ll && rr <= b) {
		vv[n] += v;
		return;
	}
	int middle = (ll+rr)/2;
	if(a <= middle)
		update(2*n, ll, middle, a, b, v);
	if(b > middle)
		update(2*n+1, middle+1, rr, a, b, v);
	vv[n] = vv[n*2]+vv[n*2+1];
}
 
 void read(){
    int z;
    for (int i = 1; i <= n; i++){
        						f >> z; update(1, 1, n, i, i, z);    
			                   }
 
}
int main()
{
	int i, a, b, d;
    f>>n>>m;
    read();
	for(i = 1; i <=m; ++ i) {
		f>>a>>b>>d;
		if(a==1) {
			int sum = query(1, 1, n, b, d);
			g<<sum<<endl;
		}
		else { update(1, 1, n, b, b, -d); 
	}
}
	return 0;
}