Pagini recente » Cod sursa (job #2279797) | Cod sursa (job #3182279) | Cod sursa (job #1803564) | Cod sursa (job #1011414) | Cod sursa (job #2998531)
#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 = max(2,(int)ceil(sqrt(n)));
if(block == 1) block++;
for(int i = 1; i <= n ; i++)
{
ap[i] = ap[i - 1];
if(i % block == 1) ap[i]++;
cin >> v[i]; mars[ap[i]] += v[i];
}
while(q--)
{
cin >> a >> b >> c;
if(a == 0)
{
mars[ap[b]] -= c;
v[b] -= c;
}
else
{
cout << query(c) - query(b - 1) << '\n';
}
}
}