Pagini recente » Cod sursa (job #2351680) | Cod sursa (job #122330) | Cod sursa (job #391166) | Cod sursa (job #235218) | Cod sursa (job #2989150)
#include<fstream>
#include<cmath>
using namespace std;
ifstream cin("datorii.in");
ofstream cout("datorii.out");
const int NMAX = 2e5 + 1;
const int BMAX = ceil(sqrt(NMAX));
long long mars[BMAX + 10];
int v[NMAX],block,ap[NMAX];
long long query(int pref)
{
long long ans = 0;
for(int i = 1; i < ap[pref] ; i++) ans += mars[i];
for(int i = (ap[pref] - 1) * block + 1; i <= pref ; i++) ans += v[i];
return ans;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr),cout.tie(nullptr);
int n,q,a,b,c; cin >> n >> q; block = ceil(sqrt(n));
ap[1] = 1;
for(int i = 2; i <= n ; i++)
{
ap[i] = ap[i - 1];
if(i % block == 1) ap[i]++;
}
for(int i = 1; i <= n ; i++)
{
cin >> v[i];
mars[ap[i]] += v[i];
}
long long maxim = -1e18;
while(q--)
{
cin >> a >> b >> c;
if(a == 0)
{
mars[ap[b]] -= c;
v[b] -= c;
}
else
{
cout << query(c) - query(b - 1) << '\n';
}
}
}