#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; class BIT2D{ /*binary indexed tree 2d*/ private: vector< vector > data; int xsize; int ysize; public: BIT2D(int n, int m ): data(n+1,vector((m+1),0)),xsize(n),ysize(m){ return; } long long getSum( int x1, int y1, int x2, int y2 ){ // return getSum ((x1,y1), (x2,y2)] ... means [(x1+1,y1+1),(x,y)] return getSum_(x2,y2)-getSum_(x1,y2)-getSum_(x2,y1)+getSum_(x1,y1); } long long getSum_(int x, int y){ // return getSum ((0,0), (x,y)] ... means [(1,1),(x,y)] long long ans = 0; for( int i = x ; 0 < i; i -=i&-i ){ for( int j = y; 0 < j; j -= j&-j ){ ans += data[i][j]; } } return ans; } void add(int x, int y, int v){ // add v to (x,y) for( int i = x ; i <= xsize; i += i&-i ){ for( int j = y ; j <= ysize; j+= j&-j ){ data[i][j] += v; } } return; } }; class BIT2DFILL{ /*2 dimensional binary indexed tree, with filling 2d field */ private: BIT2D bxy; BIT2D bx; BIT2D by; BIT2D bc; public: BIT2DFILL(int n,int m): bxy(n,m),bx(n,m),by(n,m),bc(n,m){ return; } long long getSum_( int x, int y ){ // return getSum of first l factors, ((0,0),(x,y)] //cout << bxy.getSum_(x,y) <<"*"<0) ans+=p; } } printf("%d\n",ans); return 0; }