zoukankan      html  css  js  c++  java
  • fzu2091

                                                  Problem 2091 播放器

    Accept: 155    Submit: 571 Time Limit: 1000 mSec    Memory Limit : 32768 KB

     Problem Description

    shadow喜欢听音乐,于是v11自己写了个播放器送给了shadow,这个播放器有一个播放列表,一个“下一首”按钮,一个“上一首”按钮,还有一个播放记录。

    一开始播放器会播放播放列表中的第一首歌,当按下“下一首”按钮时,它会播放当前歌曲在播放列表中的下一首歌,若当前歌曲就是播放列表中的最后一首歌时,它仍会播放播放列表中的最后一首歌;当按下“上一首”按钮时,它会清除播放记录中的最后一首歌,并播放清除后播放记录中的最后一首歌,若清除后播放记录为空,则播放播放列表中的第一首歌;当按下播放列表中的某一首歌曲,它会播放该首歌曲。

    任何时候,当播放器播放一首歌时,如果该歌曲与播放记录中的最后一首不同或者播放记录为空,便将该歌曲添加到播放记录中成为最后一首。

    现在shadow对播放器进行了一系列操作,那么你能告诉我shadow进行每一个操作后,播放器在播放哪首歌吗?

     Input

    输入数据第一行包含一个整数T,表示测试数据的组数。对于每组测试数据:

    第一行包含两个整数n( 0 < n <= 500 )、m( 0 < m <= 10000),分别表示播放列表中有n首歌曲,shadow进行了m项操作,播放列表中歌的编号依次为1,2,3……n 。

    接下来m行,每行为以下三种形式之一:

    PRE 表示按下了“上一首”按钮。

    PLAY x 其中x为一个整数( 0 < x <= n ),表示按下了播放列表中的第x首歌。

    NEXT 表示按下了“下一首”按钮。

     Output

    对于每组数据:输出m行,每行一个整数,表示执行了一项操作后播放器正在播放的歌曲。

     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

     Source

    福州大学第九届程序设计竞赛
     
     
     
     
     
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int s[11000];
    int top;
    int main()
    {
        int t,n,m;
        scanf("%d",&t);
        while(t--)
        {
            top=1;
            s[top]=1;
            scanf("%d%d",&n,&m);
            for(int i=0;i<n;i++)
            {
                char tmp[10];
                scanf("%s",tmp);
                if(strcmp(tmp,"PRE")==0)
                {
                    top--;
                    if(top==0)
                    {
                        s[++top]=1;
                        printf("%d\n",s[top]);
                    }
                    else
                    {
                        printf("%d\n",s[top]);
                    }
                }
                else
                {
                    if(strcmp(tmp,"NEXT")==0)
                    {
                        if(s[top]==n)
                            printf("%d\n",n);
                        else
                        {
                            int tt=s[top];
                            printf("%d\n",s[top]+1);
                            s[++top]=tt+1;
                        }
                    }
                    else
                    {
                        int key;
                        scanf("%d",&key);
                        if(key!=s[top])
                            s[++top]=key;
                        printf("%d\n",key);
                    }
                }
            }
        }
        return 0;
    }
  • 相关阅读:
    炒股,短线学习
    炒股,短线学习
    截图贴图snipaste工具有什么用处、ppt疯狂小插件iSlide —— 最好用的PPT插件,人手必备
    截图贴图snipaste工具有什么用处、ppt疯狂小插件iSlide —— 最好用的PPT插件,人手必备
    截图贴图snipaste工具有什么用处
    网络模拟工具使用和学习GNS3+Wireshark
    VS Code行内样式提示插件
    javascript 两张图片切换 三目运算符
    小程序获取openid 小程序授权
    小程序点击跳转外部链接 微信小程序提示:不支持打开非业务域名怎么办 使用web-view 配置业务域名
  • 原文地址:https://www.cnblogs.com/Deng1185246160/p/2950797.html
Copyright © 2011-2022 走看看