1#include"../../kyopro_library/template.hpp"
12 n=v.size(),m=v.front().size();
13 dat.assign(n+1,vector<T>(m+1));
14 for(
int i=1; i<=n; i++)
for(
int j=1; j<=m; j++) {
16 dat[i][j]=v[i-1][j-1]+dat[i][j-1]+dat[i-1][j]-dat[i-1][j-1];
21 T
sum(
int l,
int r,
int u,
int d) {
22 return dat[r][d]-dat[l][d]-dat[r][u]+dat[l][u];
27 vector<vector<T>> dat;
CumulativeSum2D(const vector< vector< U > > &v)
v から2次元累積和を構築する
T sum(int l, int r, int u, int d)
矩形領域 [l, r) × [u, d) の和を求める
CumulativeSum2D()=default