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;
    }
  • 相关阅读:
    md基本语法
    CodeBlocks安装使用、汉化以及更改配色
    hexo+github搭建个人博客教程和各种坑记录
    GB/T 38637.1-2020 物联网 感知控制设备接入 第1部分:总体要求
    山东大学909数据结构与程序设计考研经验分享
    GB/T 39083-2020 快递服务支付信息交换规范
    GB/T 38829-2020 IPTV媒体交付系统技术要求 内容接入
    GB/T 37733.3-2020 传感器网络 个人健康状态远程监测 第3部分:终端技术要求
    GB/T 38801-2020 内容分发网络技术要求 互联应用场景
    GB/T 30269.809-2020 信息技术 传感器网络 第809部分:测试:基于IP的无线传感器网络网络层协议一致性测试
  • 原文地址:https://www.cnblogs.com/Deng1185246160/p/2950797.html
Copyright © 2011-2022 走看看