Cod sursa(job #2182888)

Utilizator tudorbuhniaTudor Buhnia tudorbuhnia Data 22 martie 2018 18:09:25
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>
using namespace std;
int v[1000005],aib[1000005],n;
void update(int poz,int val,int cer)
{
		if(cer==1)
				val=val*(-1);
		for(;poz<=n;poz=poz+(poz&(-poz)))
				aib[poz]+=val;
}
int query(int poz)
{
		int s=0;
		for(;poz>0;poz=poz-(poz&(-poz)))
				s+=aib[poz];
		return s;
}
int main()
{
		ifstream cin("datorii.in");
		ofstream cout("datorii.out");
    int k,cer,a,b,x,y;
    cin >> n >> k;
    for(int i=1;i<=n;i++)
    {
				cin >> v[i];
				update(i,v[i],0);
    }
    for(int i=0;i<k;i++)
    {
				cin >> cer >> a >> b;
				if(cer==0)
				{
						update(a,b,1);
				}
				if(cer==1)
				{
						x=query(b);
						y=query(a-1);
						cout << x-y << '\n';
				}
    }
    return 0;
}