zoukankan      html  css  js  c++  java
  • zzulioj--1705--小明在工作(模拟水题)

    1705: 小明在工作

    Time Limit: 1 Sec  Memory Limit: 128 MB
    Submit: 179  Solved: 59

    SubmitStatusWeb Board

    Description

    小明的工作是负责记录饭堂中正在排队的人的信息
    在他的工作中会有三种可能的事件发生:
        1.编号为id的学生加入到队伍的最后面
        2.排在最前面的学生打完饭离开了队伍
        3.老板过来询问当前排在队伍前方第k个的学生的编号
    由于每天的工作量太大(每天最多有100000个以上事件发生),
    小明苦不堪言,让你写个程序帮他

    Input

    输入的第一个数是正整数T,表明接下来有T组数据 
    每组数据的第一个数为正整数n,表示有n件事会发生 
    接下来有n行,每行分别表示上诉三种事件的其中一种,格式分别如下: 
    1 id 

    3 k 
    注意当队伍中已经没人的时候请忽略第2种事件,每组数据新开始的时候队伍中人数都为0

    Output

    对于给个第3种的事件,请输出第k个学生的编号, 
    如果队伍的人数小于k,输出“na li you zhe me duo ren”。

    Sample Input

    251 11 23 123 121 13 2

    Sample Output

    12na li you zhe me duo ren

    HINT


    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    int num[100100];
    int main()
    {
    	int t;
    	scanf("%d",&t);
    	while(t--)
    	{
    		int n;
    		scanf("%d",&n);
    		int k=0,s=0,q;//num表示队列,s,k分别为队首和队尾 
    		memset(num,0,sizeof(num));
    		while(n--)
    		{
    			int id;
    			scanf("%d",&id);
    			if(id==1)
    			scanf("%d",&num[++k]);
    			else if(id==2)
    			{
    				if(s<k)
    				s++;//没有人的时候s不加,因为这个哇了一次 
    			}
    			else if(id==3)
    			{
    				scanf("%d",&q);
    				if(s+q<=k)
    				printf("%d
    ",num[s+q]);
    				else
    				printf("na li you zhe me duo ren
    ");
    			}
    		}
    	}
    	return 0;
    }


  • 相关阅读:
    【NX二次开发】Block UI 组
    【NX二次开发】Block UI 双精度表
    【NX二次开发】Block UI 整数表
    自己写的简单的轮播图
    微信分享到朋友圈----摘录
    HTML5比较实用的代码
    苏格拉底的名言警句
    jQuery 幻灯片 ----摘录
    DeDe调用指定栏目ID下的文章
    JQuery 判断ie7|| ie8
  • 原文地址:https://www.cnblogs.com/playboy307/p/5273584.html
Copyright © 2011-2022 走看看