Library

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

View the Project on GitHub jellc/Library

:warning: XOR Elimination
(src/algebra/linear/xor_elimination.hpp)

Code

#pragma once

/**
 * @file xor_elimination.hpp
 * @brief XOR Elimination
 */

#include <vector>

namespace workspace {

template <class Expr> class xor_elimination : std::vector<Expr> {
  using base = std::vector<Expr>;
 public:
  using base::begin;
  using base::end;
  using base::size;

  bool add(Expr __e) {
    for (auto __i = begin(); __i != end(); ++__i)
      if ((*__i ^ __e) < __e) __e ^= *__i;
    if (__e) base::emplace_back(__e);
    return __e;
  }
};

}  // namespace workspace
#line 2 "src/algebra/linear/xor_elimination.hpp"

/**
 * @file xor_elimination.hpp
 * @brief XOR Elimination
 */

#include <vector>

namespace workspace {

template <class Expr> class xor_elimination : std::vector<Expr> {
  using base = std::vector<Expr>;
 public:
  using base::begin;
  using base::end;
  using base::size;

  bool add(Expr __e) {
    for (auto __i = begin(); __i != end(); ++__i)
      if ((*__i ^ __e) < __e) __e ^= *__i;
    if (__e) base::emplace_back(__e);
    return __e;
  }
};

}  // namespace workspace
Back to top page