そーすにっき

なんかいろいろのせておくばしょ

DSL_2_B

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=DSL_2_B

この手のクエリが出たときに系が弱すぎる気がしたのでとりあえずBITの実装をやることに

幾何はどうしたって…?忙しさで忘れました

とりあえずこんなんでいいかなと精進に際してペタリできるようにちゃんとクラスを実装

最近こういうのちゃんとした方がいいかもなと思い始めたのでやることにしました

#include <iostream>
#include <deque>
#include <vector>
#include <cstdio>
#include <cstring>
#include <utility>
#include <algorithm>
#include <string>
#include <cmath>
#include <queue>
 
#define i64 long long
#define ui64 unsigned long long
#define REP(i,n) for(int (i)=0;(i)<(n);i++)
#define REP2(i,k,n) for(int (i)=(k);(i)<(n);i++)
#define MDIST(a,b) abs(a-b)
#define DIST(a,b) sqrt((a)*(a)+(b)*(b))
#define ATCODER 1000000007
using namespace std;
  
////////////////////////
 
class BIT{
  int size;
  vector<i64> tree;
  
public:
  BIT():size(0),tree(0){};
  BIT(int n):size(n),tree(n+1,0){};
  void add(i64 x,int n){
    for(int i=n;i<=size;i+=i&-i){
      tree[i]+=x;
    }
  }
  i64 sum(int s,int t){
    if(s>t)return 0;
    i64 res=0;
    for(int i=t;i>0;i-=i&-i){
      res += tree[i];
    }
    for(int i=s-1;i>0;i-=i&-i){
      res -= tree[i];
    }
    return res;
  }
  i64 get(int n){
    return tree[n];
  }
};
 
int main(){
  int n,q;
  cin >> n >> q;
  BIT d(n);
  int com,x,y;
  for(int i=0;i<q;i++){
    cin >> com >> x >> y;
    if(com)cout << d.sum(x,y) << endl;
    else d.add(y,x);
  }
}