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

好老师

Time Limit: 1 Sec  Memory Limit: 128 MB

Submit: 108  Solved: 52

[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

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

Sample Output

left of D
H
middle of D and H
right of right of H

HINT

Source

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

水题。。。。。。

AC代码如下:

#include<iostream>
#include<cstdio>
using namespace std;
int main ()
{
    int n,q,p[105];
    char a[105][4];
    int i,j;
    cin>>n;
    for(i=1;i<=n;i++)
        cin>>a[i];
    cin>>q;
    for(i=1;i<=q;i++)
        cin>>p[i];
    for(i=1;i<=q;i++)
    {
        if(a[p[i]][0]!='?')
            cout<<a[p[i]]<<endl;
        else{
            int l,r,ll=0,rr=0;
            l=p[i];r=p[i];
            while(a[l][0]=='?')
            {
                l--;
                ll++;
                if(l<1)
                {ll=105;break;}
            }
            while(a[r][0]=='?')
            {
                r++;
                rr++;
                if(r>n)
                {rr=105;break;}
            }
            if(ll==rr)
               printf("middle of %s and %s\n",a[l],a[r]);
            else if(ll>rr)
            {
                for(j=1;j<=rr;j++)
                    printf("left of ");
                printf("%s\n",a[r]);
            }
            else
            {
                for(j=1;j<=ll;j++)
                    printf("right of ");
                printf("%s\n",a[l]);
            }

        }
    }
    return 0;
}

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

时间: 2024-11-11 21:54:26

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

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 1334: 好老师(数学啊 湖南省第九届大学生计算机程序设计竞赛)

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

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(高桥不再被淹,但低桥仍然

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

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