fzu 2091プレーヤー(スタック)
8383 ワード
Description
shadowは音楽を聴くのが好きで、そこでv 11は自分で1つのプレーヤーを書いてshadowにあげて、このプレーヤーは1つのプレイリストがあって、1つの“次の1首”のボタンがあって、1つの“前の1首”のボタンがあって、もう1つのプレイ記録があります.
最初はプレーヤーがプレイリストの最初の曲を再生し、「次の曲」ボタンを押すと、現在の曲がプレイリストの次の曲を再生し、現在の曲がプレイリストの最後の曲であれば、プレイリストの最後の曲を再生します.「前の曲」ボタンを押すと、再生記録の最後の歌が消去され、消去後の再生記録の最後の歌が再生され、消去後の再生記録が空になると、プレイリストの最初の歌が再生されます.プレイリストの曲を押すと、その曲が再生されます.
いずれにしても、プレーヤーが1曲を再生すると、その曲が再生記録の最後の曲と異なる場合、または再生記録が空の場合、その曲を再生記録に追加して最後の曲となる.
今shadowはプレーヤーに対して一連の操作を行って、それではあなたは私にshadowがすべての操作を行った後に、プレーヤーはどの歌を放送していますか?
Input
入力データの最初の行は、テストデータのグループ数を表す整数Tを含む.テストデータのセットごとに:
1行目は2つの整数n(0次のm行は、動作ごとに以下の3つの形式の1つです.
PREは、「前へ」ボタンを押したことを示します.
PLAY xは、xが整数(0NEXT表示では「次へ」ボタンが押されています.
Output
各グループのデータ:m行を出力し、各行に整数を1つずつ出力し、1つの操作を実行した後にプレーヤーが再生している曲を示す.
Sample Input
Sample Output
shadowは音楽を聴くのが好きで、そこでv 11は自分で1つのプレーヤーを書いてshadowにあげて、このプレーヤーは1つのプレイリストがあって、1つの“次の1首”のボタンがあって、1つの“前の1首”のボタンがあって、もう1つのプレイ記録があります.
最初はプレーヤーがプレイリストの最初の曲を再生し、「次の曲」ボタンを押すと、現在の曲がプレイリストの次の曲を再生し、現在の曲がプレイリストの最後の曲であれば、プレイリストの最後の曲を再生します.「前の曲」ボタンを押すと、再生記録の最後の歌が消去され、消去後の再生記録の最後の歌が再生され、消去後の再生記録が空になると、プレイリストの最初の歌が再生されます.プレイリストの曲を押すと、その曲が再生されます.
いずれにしても、プレーヤーが1曲を再生すると、その曲が再生記録の最後の曲と異なる場合、または再生記録が空の場合、その曲を再生記録に追加して最後の曲となる.
今shadowはプレーヤーに対して一連の操作を行って、それではあなたは私にshadowがすべての操作を行った後に、プレーヤーはどの歌を放送していますか?
Input
入力データの最初の行は、テストデータのグループ数を表す整数Tを含む.テストデータのセットごとに:
1行目は2つの整数n(0
PREは、「前へ」ボタンを押したことを示します.
PLAY xは、xが整数(0
Output
各グループのデータ:m行を出力し、各行に整数を1つずつ出力し、1つの操作を実行した後にプレーヤーが再生している曲を示す.
Sample Input
1
5 10
PRE
NEXT
PLAY 5
NEXT
PLAY 5
PLAY 3
NEXT
PRE
PRE
PRE
Sample Output
1
2
5
5
5
3
4
3
5
2
#include <iostream>
#include <string>
using namespace std;
string temp;
int st=0,en=0,a[100000],n,m;
void pre()
{
en=en-1;
if(en<st)
{
st=0;en=0; a[st]=1;
cout<<a[st]<<endl;
}
else
cout<<a[en]<<endl;
}
void next()
{
if(a[en]<n)
{
en++;
a[en]=a[en-1]+1;
cout<<a[en]<<endl;
}
else
cout<<a[en]<<endl;
}
void play()
{
int song;
cin>>song;
if(song!=a[en])
{
en++;
a[en]=song;
cout<<a[en]<<endl;
}
else
cout<<a[en]<<endl;
}
int main()
{
int T;
cin>>T;
while(T--)
{
int i;
st=0;en=0;
cin>>n>>m;
a[0]=1;
for(i=0;i<m;i++)
{
cin>>temp;
if(temp=="PRE")
pre();
if(temp=="NEXT")
next();
if(temp=="PLAY")
play();
}
}
return 0;
}