タイトル1512:キュー&&min関数を含むスタックを2つのスタックで実現する
2385 ワード
タイトルの説明:
2つのスタックで1つのキューを実現し、キューのPushとPop操作を完了します.キュー内の要素はintタイプです.
入力:
各入力ファイルには、テストサンプルが含まれています.各テストサンプルについて、最初の行には、キュー操作の個数を表すn(1<=n<=10000000)が入力される.次のn行、各行にキュー操作を入力:1.PUSH Xはキュー内のpushの整数x(x>=0)2.POPがキューからpopする数.
出力:
各テストケースに対応して、すべてのpop操作のキューpopからの数値を印刷します.pop操作を実行するときにキューが空の場合は、-1を印刷します.
サンプル入力:
2つのスタックで1つのキューを実現し、キューのPushとPop操作を完了します.キュー内の要素はintタイプです.
入力:
各入力ファイルには、テストサンプルが含まれています.各テストサンプルについて、最初の行には、キュー操作の個数を表すn(1<=n<=10000000)が入力される.次のn行、各行にキュー操作を入力:1.PUSH Xはキュー内のpushの整数x(x>=0)2.POPがキューからpopする数.
出力:
各テストケースに対応して、すべてのpop操作のキューpopからの数値を印刷します.pop操作を実行するときにキューが空の場合は、-1を印刷します.
サンプル入力:
3
PUSH 10
POP
POP
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
using namespace std;
int s1[100001],s2[100001];
int top1,top2;
int pop(){
if(top2 < 0){
while(top1 >= 0)
s2[++top2] = s1[top1--];
}
if(top2 < 0)
return -1;
else
return s2[top2--];
}
int main(int argc, char const *argv[])
{
int n,x;
char op[4];
while(scanf("%d",&n) != EOF){
top1 = top2 = -1;
for(int i = 0;i < n;i++){
scanf("%s",op);
if(!strcmp(op,"PUSH")){
scanf("%d",&x);
s1[++top1] = x;
}
if(!strcmp(op,"POP"))
printf("%d
",pop());
}
}
return 0;
}
サンプル :10
-1
タイトルの :
スタックのデータ を します.スタックの を るmin をこのタイプで してください.
:
には のテストサンプルが まれ、 はEOFで します. テストケースについて、 された 1の は n(1<=n<=1000000)であり、nは する のステップ を す. にn があり、 に1 Ciが まります.Ci=’s’の 、kをスタックに し むことを す kが く.Ci=’o’の 、スタックトップ がポップアップされます.
:
テストケースの に し、スタックが でない は、 するスタックの を します.そうでなければNULLを します.
サンプル :7
s 3
s 4
s 2
s 1
o
o
s 0
サンプル :3
3
2
1
2
3
0
#include <cstdio>
#include <iostream>
#include <list>
#include <stack>
#include <algorithm>
using namespace std;
stack<int> s1,s2;
int main(int argc, char const *argv[])
{
int n,x;
char s[3];
while(scanf("%d",&n) != EOF){
while(n--){
scanf("%s",s);
if(s[0] == 's'){
scanf("%d",&x);
if(s2.empty() || (s2.top() > x)){
s2.push(x);
}else
s2.push(s2.top());
s1.push(x);
}
else{
if(!s1.empty()){
s1.pop();
s2.pop();
}else{
printf("NULL
");
continue;
}
}
if(!s1.empty())
printf("%d
",s2.top());
else
printf("NULL
");
}
}
return 0;
}