Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # include <iostream>
- # define ll long long
- using namespace std;
- ll n,k,l,r,x,a[1000001],t[1000005];
- void build ( ll v, ll tl, ll tr ) {
- if ( tl==tr ) {
- t[v] = a[tl];
- }
- else {
- ll mid = (tl+tr)/2;
- build (v*2,tl,mid);
- build (v*2+1,mid+1,tr);
- t[v] = t[v*2]+t[v*2+1];
- }
- }
- ll sum ( ll v, ll tl, ll tr, ll l, ll r ) {
- if ( l>r ) {
- return 0;
- }
- if ( l==tl && r==tr ) {
- return t[v];
- }
- ll mid = (tl+tr)/2;
- return sum(v*2,tl,mid,l,min(r,mid))+sum(v*2+1,mid+1,tr,max(l,mid+1),r);
- }
- void upd ( ll v, ll tl, ll tr, ll pos, ll val ) {
- if ( tl==tr ) {
- t[v] = val;
- }
- else {
- ll mid = (tl+tr)/2;
- if ( pos<=mid ) {
- upd (v*2,tl,mid,pos,val);
- }
- else {
- upd (v*2+1,mid+1,tr,pos,val);
- }
- t[v] = t[v*2]+t[v*2+1];
- }
- }
- int main () {
- freopen ("sum.in","r",stdin);
- freopen ("sum.out","w",stdout);
- scanf ("%I64d%I64d", &n, &k);
- for ( ll i=1; i<=n; ++i ) {
- a[i] = 0;
- }
- build (1,1,n);
- for ( ll i=1; i<=k; ++i ) {
- char q;
- scanf("%1s", &q);
- if ( q=='A' ) {
- ll x,y;
- scanf ("%I64d%I64d", &x, &y);
- upd(1,1,n,x,y);
- }
- else {
- ll l,r;
- scanf ("%I64d%I64d", &l, &r);
- cout << sum(1,1,n,l,r) << '\n';
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement