library

This documentation is automatically generated by online-judge-tools/verification-helper

View the Project on GitHub c3pk1/library

:heavy_check_mark: datastructure/CumulativeSum.hpp

Verified with

Code

#include <vector>
#include <cassert>
template<typename T>
struct CumulativeSum{
  int N;
  std::vector<T> data;

  CumulativeSum() = default;

  CumulativeSum(int n) : N(n) {
    data.assign(N+1, 0);
  }

  CumulativeSum(const std::vector<T> &v) : N(v.size()){
    data.assign(N+1, 0);
    for(int i=0; i<N; i++) {
      data[i+1] = data[i] + v[i];
    }
  }

  void build(const std::vector<T> &v){
    N = v.size();
    data.assign(N+1, 0);
    for(int i=0; i<N; i++) {
      data[i+1] = data[i] + v[i];
    }
  }
  
  // sum[0, i)
  inline T operator[](int i) { 
    assert(i <= N);
    return data[i]; 
  }
};
#line 1 "datastructure/CumulativeSum.hpp"
#include <vector>
#include <cassert>
template<typename T>
struct CumulativeSum{
  int N;
  std::vector<T> data;

  CumulativeSum() = default;

  CumulativeSum(int n) : N(n) {
    data.assign(N+1, 0);
  }

  CumulativeSum(const std::vector<T> &v) : N(v.size()){
    data.assign(N+1, 0);
    for(int i=0; i<N; i++) {
      data[i+1] = data[i] + v[i];
    }
  }

  void build(const std::vector<T> &v){
    N = v.size();
    data.assign(N+1, 0);
    for(int i=0; i<N; i++) {
      data[i+1] = data[i] + v[i];
    }
  }
  
  // sum[0, i)
  inline T operator[](int i) { 
    assert(i <= N);
    return data[i]; 
  }
};
Back to top page