Cod sursa(job #2119764)

Utilizator vladcoroian2001Vlad Coroian vladcoroian2001 Data 1 februarie 2018 17:02:14
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include <fstream>

using namespace std;
ifstream fi("datorii.in");
ofstream fo("datorii.out");
const int NMAX=15005;
int n,AIB[NMAX],a,x,y,tip,m;
void update(int val,int pos)
{
	int k=pos;
	while(k<=n)
	{
		AIB[k]+=val;
		k=k+(k&-k);
	}
}
int f(int pos)
{
	int k=pos,sum=0;
	while(k>=1)
	{
		sum+=AIB[k];
		k=k-(k&-k);
	}
	return sum;
}
int main()
{
	fi>>n>>m;
	for(int i=1;i<=n;i++)
	{
		fi>>a;
		update(a,i);
	}
	for(int i=1;i<=m;i++)
	{
		fi>>tip>>x>>y;
		if(tip==0)
			update(-y,x);
		else
			fo<<f(y)-f(x-1)<<"\n";
	}
	fi.close();
	fo.close();
	return 0;
}