LeetCode Biweekly Contest 40
問題文
省略
省略
C++に変換後のコードはこちら
#define main dummy_main
{}
#undef main
int ast, aed, a[3000], bst, bed, b[3000];
class FrontMiddleBackQueue {
public:
FrontMiddleBackQueue() {
ast = aed = bst = bed = 1500;
}
void doit(void){
int i;
while(aed - ast > bed - bst){
i = a[--aed];
b[--bst] = i;
}
while(aed - ast < bed - bst - 1){
i = b[bst++];
a[aed++] = i;
}
}
void pushFront(int val) {
a[--ast] = val;
}
void pushMiddle(int val) {
doit();
a[aed++] = val;
}
void pushBack(int val) {
b[bed++] = val;
}
int popFront() {
if(aed - ast > 0) return a[ast++];
if(bed - bst > 0) return b[bst++];
return -1;
}
int popMiddle() {
doit();
if(aed - ast == bed - bst == 0) return -1;
if(aed - ast == bed - bst) return a[--aed];
return b[bst++];
}
int popBack() {
if(bed - bst > 0) return b[--bed];
if(aed - ast > 0) return a[--aed];
return -1;
}
};
Current time: 2024年05月03日10時51分27秒
Last modified: 2020年12月06日03時03分22秒 (by laycrs)
Tags: Competitive_Programming_Incomplete LeetCode
トップページに戻る
Logged in as: unknown user (not login)