Description
refresh最近發了一筆橫財,開了一家停車場。由於土地有限,停車場內停車數量有限,但是要求進停車場的車輛過多。當停車場滿時,要進入的車輛會進入便道等待,最先進入便道的車輛會優先 進入停車場,而且停車場的結構要求只出去的車輛必須是停車場中最後進去的車輛。現告訴你停車場容量N以及命令數M,以及一些命令(Add num 表示車牌號為num的車輛要進入停車場或便道, Del 表示停車場中出去了一輛車,Out 表示便道最前面的車輛不再等待,放棄進入停車場)。假設便道內的車輛不超過1000000.Input
首先輸入N和M(0< n,m <200000),接下來輸入M條命令。Output
輸入結束後,如果出現停車場內無車輛而出現Del或者便道內無車輛而出現Out,則輸出Error,否則輸出停車場內的車輛,最後進入的最先輸出,無車輛不輸出。Sample Input
2 6 Add 18353364208 Add 18353365550 Add 18353365558 Add 18353365559 Del Out
Sample Output
18353365558 18353364208
Hint
#include#include #include #include #include #include #include #include using namespace std; string a[2000021],b[2000021]; int n,m; int main() { while(cin >> n >> m) { int flag = 0; string str,num; int h = 0,k1 = 0,k2 = 0; for(int i=0; i > str; if(str == "Add") { cin >> num; if(h k1) { a[h] = b[++k1]; } else if(k2<=k1) { h--; } } else if(str == "Out") { if(k2 <= k1) { flag = 1; } else { k1++; } } } if(h>0 && flag == 0) { while(h>0) { cout << a[h] << endl; h--; } } else if(flag == 1) { cout << "Error" << endl; } } return 0; }
#include#include #include #include #include #include #include #include using namespace std; int n,m; int main() { while(cin >> n >> m) { stack a; queue b; int flag = 0; string str,num; for(int i=0; i > str; if(str == "Add") { cin >> num; if(a.size() == n) { b.push(num); } else { a.push(num); } } else if(str == "Del") { if(a.empty()) { flag = 1; } else { a.pop(); if(!b.empty()) { a.push(b.front()); b.pop(); } } } else if(str == "Out") { if(b.empty()) { flag = 1; } else { b.pop(); } } // printf("h = %d k1 = %d k2 = %d\n",h,k1,k2); } if(flag == 1) { cout << "Error" << endl; } else { while(!a.empty()) { cout << a.top() << endl; a.pop(); } } } return 0; }