Pagini recente » Cod sursa (job #237613) | Cod sursa (job #1475768) | Cod sursa (job #2906937) | Cod sursa (job #2338147) | Cod sursa (job #2276924)
#include <fstream>
using namespace std;
ifstream f ("datorii.in");
ofstream g ("datorii.out");
int const NM = 15e3;
int dp [1 + NM] , aib [1 + NM] , n;
inline int fn (int x){
return x & (0 - x);
}
void add (int pos , int x){
for(int i = pos ; i <= n ; i += fn (i))
aib [i] += x;
}
inline int best (int pos){
int ans = 0;
for(int i = pos ; i ; i -= fn (i))
ans += aib [i];
return ans;
}
int main()
{
int q;
f >> n >> q;
for(int i = 1 ; i <= n ; ++ i){
f >> dp [i];
dp [i] += dp [i - 1];
}
for(int i = 1 ; i <= q ; ++ i){
int t , a , b;
f >> t >> a >> b;
if (! t)
add (a , b);
else
g << dp [b] - dp [-1 + a] - best (b) + best (-1 + a) << '\n';
}
return 0;
}