Pagini recente » Cod sursa (job #983489) | Cod sursa (job #2169133) | Cod sursa (job #2054468) | Cod sursa (job #2057943) | Cod sursa (job #2009817)
#include <fstream>
using namespace std;
ifstream fi("datorii.in");
ofstream fo("datorii.out");
int n,m,i,A[15001],x,y;
int AIB[15001];
long long rez;
bool type;
void update(int p, int v)
// A[x]-=v
{
while (p<=n)
{
AIB[p]-=v;
p=p+(p&(-p));
}
}
void updatef(int p, int v)
// A[x]+=v
{
while (p<=n)
{
AIB[p]+=v;
p=p+(p&(-p));
}
}
long long f(int p)
// returneaza suma A[1]+A[2]+...+A[p]
{
long long s;
s=0;
while (p>=1)
{
s=s+AIB[p];
p=p-(p&(-p));
}
return s;
}
int query(int st, int dr)
// returneaza A[st]+...+A[dr]
{
return f(dr)-f(st-1);
}
int main()
{
fi>>n>>m;
for( i=1; i<=n; i++)
{
fi>>A[i];
updatef(i,A[i]);
}
for( i=1; i<=m; i++)
{
fi>>type>>x>>y;
if( type==0)
update(x,y);
else
fo<<query(x,y)<<'\n';
}
fi.close();
fo.close();
return 0;
}