这个是不会变慢的循环队列,因为$\&$比$\%$快很多。
const int MAXN = 1 << 20;
struct queue {
int l, r, q[MAXN];
queue(): l(1), r(0) {}
inline void push(int x) {
q[++r & MAXN - 1] = x;
}
inline void pop() {
l++;
}
inline int front() {
return q[l & MAXN - 1];
}
inline bool size() {
return l <= r;
}
};