好老师 (湖南省第九届大学生计算机程序设计竞赛)

1334: 好老师

Time Limit: 1 Sec  Memory Limit: 128 MB

Submit: 267  Solved: 131

[Submit][Status][Web
Board
]

Description

我想当一个好老师,所以我决定记住所有学生的名字。可是不久以后我就放弃了,因为学生太多了,根本记不住。但是我不能让我的学生发现这一点,否则会很没面子。所以每次要叫学生的名字时,我会引用离他最近的,我认得的学生。比如有10个学生:

A ? ? D ? ? ? H ? ?

想叫每个学生时,具体的叫法是:


位置


叫法


1


A


2


right of A (A右边的同学)


3


left of D (D左边的同学)


4


D


5


right of D (D右边的同学)


6


middle of D and H (D和H正中间的同学)


7


left of H (H左边的同学)


8


H


9


right of H (H右边的同学)


10


right of right of H (H右边的右边的同学)

Input

输入只有一组数据。第一行是学生数n(1<=n<=100)。第二行是每个学生的名字,按照从左到右的顺序给出,以空格分隔。每个名字要么是不超过3个英文字母,要么是问号。至少有一个学生的名字不是问号。下一行是询问的个数q(1<=q<=100)。每组数据包含一个整数p(1<=p<=n),即要叫的学生所在的位置(左数第一个是位置1)。

Output

对于每个询问,输出叫法。注意"middle of X and Y"只有当被叫者有两个最近的已知学生X和Y,并且X在Y的左边。

Sample Input

10A ? ? D ? ? ? H ? ?438610

Sample Output

left of DHmiddle of D and Hright of right of H

HINT

一道水题;直接进行模拟,按照位置进行判断,输出询问,两边进行搜索;搜索到不为‘?’的值;

#include <cstdio>
#include <cstring>
using namespace std;

int main()
{
    char name[101][4];
    int n,i,q,p,left,right;
    scanf("%d",&n);
    for(i=1;i<=n;i++) scanf("%s",name[i]);
    scanf("%d",&q);
    while(q--)
    {
        scanf("%d",&p);
        left=right=p;
        if(name[p][0]!='?') printf("%s\n",name[p]);//直接就是询问的位置
        else
        {
            while(1)
            {
                if(left-1>0)
                    left=left-1;
                if(right+1<=n)
                    right=right+1;
                if(name[left][0]!='?' && name[right][0]!='?')//在两个中间的情况
                {
                    printf("middle of %s and %s\n",name[left],name[right]);
                    break;
                }
                 if(name[left][0]=='?' && name[right][0]!='?')//在左边的情况
                {
                     for(i=1;i<=right-p;i++)//这里还要进行判断一下,可能会在左边的左边
                        printf("left of ");
                        printf("%s\n",name[right]);
                      break;
                }
                if(name[left][0]!='?' && name[right][0]=='?')//在右边的情况
                {
                     for(i=1;i<=p-left;i++)
                        printf("right of ");
                        printf("%s\n",name[left]);
                      break;
                }
            }
        }
    }
    return 0;
}

时间: 2024-11-05 10:41:12

好老师 (湖南省第九届大学生计算机程序设计竞赛)的相关文章

CSU 1334: 好老师(数学啊 湖南省第九届大学生计算机程序设计竞赛)

题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1334 Description 我想当一个好老师,所以我决定记住所有学生的名字.可是不久以后我就放弃了,因为学生太多了,根本记不住.但是我不能让我的学生发现这一点,否则会很没面子.所以每次要叫学生的名字时,我会引用离他最近的,我认得的学生.比如有10个学生: A ? ? D ? ? ? H ? ? 想叫每个学生时,具体的叫法是: 位置 叫法 1 A 2 right of A (A右边的同

湖南省第九届大学生计算机程序设计竞赛

好老师 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 108  Solved: 52 [Submit][Status][Web Board] Description 我想当一个好老师,所以我决定记住所有学生的名字.可是不久以后我就放弃了,因为学生太多了,根本记不住.但是我不能让我的学生发现这一点,否则会很没面子.所以每次要叫学生的名字时,我会引用离他最近的,我认得的学生.比如有10个学生: A ? ? D ? ? ? H ? ? 想叫每个学生时,

CSU 1330: 字符识别?(字符串模拟啊 湖南省第九届大学生计算机程序设计竞赛)

题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1330 Description 你的任务是写一个程序进行字符识别.别担心,你只需要识别1, 2, 3,如下: .*.  ***  *** .*.  ..*  ..* .*.  ***  *** .*.  *..  ..* .*.  ***  *** Input 输入仅包含一组数据,由6行组成.第一行为字符的个数n(1<=n<=10).以下5行每行包含4n个字符.每个字符恰好占5行3列,

CSU 1336: Interesting Calculator(BFS啊 湖南省第九届大学生计算机程序设计竞赛)

题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1336 1336: Interesting Calculator Description There is an interesting calculator. It has 3 rows of buttons. Row 1: button 0, 1, 2, 3, ..., 9. Pressing each button appends that digit to the end of

CSU 1337: 搞笑版费马大定理(数学啊 湖南省第九届大学生计算机程序设计竞赛)

题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1337 Description 费马大定理:当n>2时,不定方程an+bn=cn没有正整数解.比如a3+b3=c3没有正整数解.为了活跃气氛,我们不妨来个搞笑版:把方程改成a3+b3=c3,这样就有解了,比如a=4, b=9, c=79时43+93=793. 输入两个整数x, y, 求满足x<=a,b,c<=y的整数解的个数. Input 输入最多包含10组数据.每组数据包含两个

CSU 1339: 最后一滴血(模拟啊 湖南省第九届大学生计算机程序设计竞赛)

题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1339 Description 在ACM/ICPC这样的程序设计竞赛中,最早解出一道题称为抢到FB(First Blood,第一滴血).现在ACM/ICPC世界总决赛甚至为每道题的FB设立了特别奖. 也许我们还可以设一个LB(Last Blood,最后一滴血)奖,奖给最后一个解出某题的队伍.注意:你不能先提交程序,得到Yes之后等比赛快结束时把它再交一遍,因为一旦一只队伍解出了某题,它对

湖南省第九届大学生计算机程序设计竞赛 搞笑版费马大定理

搞笑版费马大定理 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 190  Solved: 93 [Submit][Status][Web Board] Description 费马大定理:当n>2时,不定方程an+bn=cn没有正整数解.比方a3+b3=c3没有正整数解.为了活跃气氛,我们最好还是来个搞笑版:把方程改成a3+b3=c3.这样就有解了.比方a=4, b=9, c=79时43+93=793. 输入两个整数x, y, 求满足x<=a,

湖南省第九届大学生计算机程序设计竞赛 字符识别?

字符识别? Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 156  Solved: 98 [Submit][Status][Web Board] Description 你的任务是写一个程序进行字符识别.别担心,你只需要识别1, 2, 3,如下: .*.  ***  *** .*.  ..*  ..* .*.  ***  *** .*.  *..  ..* .*.  ***  *** Input 输入仅包含一组数据,由6行组成.第一行为字符的个数

湖南省第九届大学生计算机程序设计竞赛 高桥和低桥

高桥和低桥 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 358  Solved: 60 Description 有个脑筋急转弯是这样的:有距离很近的一高一低两座桥,两次洪水之后高桥被淹了两次,低桥却只被淹了一次,为什么?答案是:因为低桥太低了,第一次洪水退去之后水位依然在低桥之上,所以不算"淹了两次".举例说明: 假定高桥和低桥的高度分别是5和2,初始水位为1 第一次洪水:水位提高到6(两个桥都被淹),退到2(高桥不再被淹,但低桥仍然