Pagini recente » Cod sursa (job #1903999) | Cod sursa (job #208245) | Cod sursa (job #2222695) | Cod sursa (job #2475755) | Cod sursa (job #3252322)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n, m, i, k, s[125], a[15005], j, x, y, c, stk, stp, drk, drp, ans, lg;
int main()
{
fin>>n>>m;
for (i=1; i<=n; i++) fin>>a[i];
k=int(sqrt(n));
lg=n/k;
if (n%k!=0) lg++;
for (i=1; i<=k; i++) {
s[i]=0;
for (j=1; j<=k; j++) {
s[i]+=a[(i-1)*k+j];
}
}
for (i=k*lg; i<=n; i++) s[k+1]+=a[i];
for (i=1; i<=m; i++) {
fin>>c>>x>>y;
if (c==0) {
if (x%k==0) s[x/k]-=y;
else s[x/k+1]-=y;
a[x]-=y;
}
else {
if (x%k==0){
stk=x/k;
stp=k;
}
else {
stk=x/k+1;
stp=x%k;
}
if (y%k==0) {
drk=y/k;
drp=k;
}
else {
drk=y/k+1;
drp=y%k;
}
ans=0;
if (stp!=1) for (j=stp; j<=k; j++) ans+=a[(stk-1)*k+j];
else ans+=s[stk];
for (j=stk+1; j<drk; j++) ans+=s[j];
if (drp!=k) for (j=1; j<=drp; j++) ans+=a[(drk-1)*k+j];
else ans+=s[drk];
fout<<ans<<'\n';
}
}
return 0;
}