#include"library/algebra/monoid/Concepts.hpp"#pragma once
template<monoidM>classSWAG{usingX=typenameM::value_type;std::stack<X>back_stack,front_stack;// back は後ろの各要素 front は前の累積和Xback_value;inlineXfront_value()const{returnfront_stack.size()?front_stack.top():M::unit();}public:SWAG():back_value(M::unit()){}voidpush_back(Xx){back_stack.push(x);M::Rchop(back_value,x);}voidpush_front(Xx){front_stack.push(M::op(x,front_value()));}voidpop_front(){if(front_stack.empty()){if(back_stack.empty())return;while(back_stack.size()){push_front(back_stack.top());back_stack.pop();}back_value=M::unit();}front_stack.pop();}Xprod(){returnM::op(front_value(),back_value);}intsize(){returnback_stack.size()+front_stack.size();}};
Traceback(mostrecentcalllast):File"/opt/hostedtoolcache/Python/3.14.0/x64/lib/python3.14/site-packages/onlinejudge_verify/documentation/build.py",line71,in_render_source_code_statbundled_code=language.bundle(stat.path,basedir=basedir,options={'include_paths':[basedir]}).decode()~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File"/opt/hostedtoolcache/Python/3.14.0/x64/lib/python3.14/site-packages/onlinejudge_verify/languages/cplusplus.py",line187,inbundlebundler.update(path)~~~~~~~~~~~~~~^^^^^^File"/opt/hostedtoolcache/Python/3.14.0/x64/lib/python3.14/site-packages/onlinejudge_verify/languages/cplusplus_bundle.py",line312,inupdateraiseBundleErrorAt(path,i+1,"#pragma once found in a non-first line")onlinejudge_verify.languages.cplusplus_bundle.BundleErrorAt:library/datastructure/SWAG.hpp:line3:#pragmaoncefoundinanon-firstline