样例已过,已开long long
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const ll N=1e6+1;
ll n,w;
ll a[N];
struct node
{
ll l,r;
ll dat;
#define l(p) tree[p].l
#define r(p) tree[p].r
}tree[4*N];
ll ls(ll p) {return p<<1;}
ll rs(ll p) {return p<<1|1;}
void build(ll p,ll l,ll r)
{
l(p)=l;
r(p)=r;
if(l==r)
{
tree[p].dat=0;
return;
}
ll mid=(l+r)>>1;
build(ls(p),l,mid);
build(rs(p),mid+1,r);
tree[p].dat=tree[ls(p)].dat+tree[rs(p)].dat;
}
void change(ll p,ll x,ll v)
{
if(l(p)==r(p))
{
tree[p].dat=v;
return;
}
ll mid=(l(p)+r(p))>>1;
if(x<=mid) change(ls(p),x,v);
else change(rs(p),x,v);
tree[p].dat=tree[ls(p)].dat+tree[rs(p)].dat;
}
ll ask(ll p,ll l,ll r)
{
if(l<=l(p)&&r(p)<=r) return tree[p].dat;
ll val=0;
ll mid=(l(p)+r(p))>>1;
if(l<=mid) val+=ask(ls(p),l,r);
if(r>mid) val+=ask(rs(p),l,r);
return val;
}
int main()
{
cin>>n;
cin>>w;
getchar();
build(1,1,n);
while(w--)
{
char op;
ll x,y;
cin>>op>>x>>y;
switch(op)
{
case 'x':
{
change(1,x,y);
break;
}
case 'y':
{
cout<<ask(1,x,y)<<endl;
break;
}
}
}
return 0;
}