Pagini recente » Cod sursa (job #419902) | Cod sursa (job #2949594) | Cod sursa (job #1601597) | Cod sursa (job #290632) | Cod sursa (job #971458)
Cod sursa(job #971458)
#include <fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int Partial[15002],N,M;
void Update(int initial,int value)
{
int i=initial;
while(i<=N)
{
Partial[i]+=value;
i+=i&(-i);
}
}
void Update_with_Substract(int initial,int value)
{
int i=initial;
while(i<=N)
{
Partial[i]-=value;
i+=i&(-i);
}
}
void Read()
{
int i;
f>>N>>M;
for(i=1;i<=N;i++)
{
int value;
f>>value;
Update(i,value);
}
}
int Calculate_Sum_from_1(int a)
{
int i=a,result=0;
while(i>0)
{
result+=Partial[i];
i-=i&(-i);
}
return result;
}
void Calculate_Sum(int a,int b)
{
g<<Calculate_Sum_from_1(b)-Calculate_Sum_from_1(a-1)<<"\n";
}
void Browse_questions()
{
int i,T,V,P,Q;
for(i=1;i<=M;i++)
{
bool quest;
f>>quest;
if(quest==0)
{
f>>T>>V;
Update_with_Substract(T,V);
}
else
{
f>>P>>Q;
Calculate_Sum(P,Q);
}
}
}
int main()
{
Read();
Browse_questions();
return 0;
}