Pagini recente » Cod sursa (job #1073236) | Cod sursa (job #2655418) | Cod sursa (job #2199265) | Cod sursa (job #2883115) | Cod sursa (job #3292932)
#include <bits/stdc++.h>
using namespace std;
ifstream in("pic.in");
ofstream out("pic.out");
int a[15000],sumb[130],bz,bn,s,stb,drb;
void update(int poz,int val)
{
int bn=poz/bz;
sumb[bn]=sumb[bn]-a[poz]+val;
a[poz]=val;
}
void query(int st,int dr)
{
s=0;
bn=dr/bz;
stb=bn*bz;
drb=(bn+1)*bz;
if(stb>st)
{
while(stb>=st)
{
s+=a[stb];
stb--;
}
}
else if(stb<st)
{
while(stb<=st)
{
s+=a[stb];
stb++;
}
}
if(drb<dr)
{
while(drb<=dr)
{
s+=a[drb];
drb++;
}
}
else if(drb>dr)
{
while(drb>=dr)
{
s+=a[drb];
drb--;
}
}
s=s+sumb[bn];
cout<<s<<"\n";
}
int n,m,i,op,poz,val,st,dr;
int main()
{
cin>>n>>m;
bz=int(sqrt(n));
for(i=0; i<n; i++)
{
cin>>a[i];
sumb[i/bz]+=a[i];
}
for(i=1; i<=m; i++)
{
cin>>op;
if(op==0)
{
cin>>poz>>val;
update(poz,val);
}
if(op==1)
{
cin>>st>>dr;
query(st,dr);
}
}
return 0;
}