抢整
抢整
Time Limit: 1 Second Memory Limit: 8192 KB
MSTCer热衷于抢整(抢整:在论坛上抢发编号为整数帖文章,对于论坛的某一个主题帖,按照发贴时间顺序,第一个帖子拥有编号1,第二个帖子拥有编号2,依此类推)。
为了抢到整数N,许多MSTCer都发了贴,现在告诉你他们发贴的名单(已经按照发贴时间顺序排好),你能够找到谁抢到了整数N吗?
这太容易了!但是现在麻烦来了,MSTCer eshook发现了论坛的一个漏洞,利用此漏洞可以删掉编号为1的帖子(删除后原先编号为n+1的帖子的编号变为n)。假定eshook使用这个漏洞的时候,在名单记录中会多一条"-"(不包含引号)的记录,那么你还可以解决原先的问题吗?
输入格式
第一行只有一个整数N,表示要抢的整数,0 < N < 100
第二行开始一直到输入的末尾,这是按照发贴时间顺序排好的名单,每行一个MSTCer的名字,只有一个减号的一行代表eshook在那个时间执行了一次删除第一个帖子的操作(他只会在第一个帖子存在时执行这种操作)。输入数据确保最终的帖子数目不超过 2N,你可以用feof(stdin)来判断是否到达文件末尾。出现在这里的MSTCer名字可能由大写字母、小写字母、数字和下划线组成,最长为1024个字符,最短为2个字符。
输出格式
输出只需要一行,为抢到整数 N 的MSTCer的名字。
样例输入1
7
Madog
cerror
Madog
lnzju
pluskid
panda_lin
wyest
parda
Madog
样例输出1
wyest
样例输入2
4
pluskid
cerror
mnxheng
quark
hzqtc
eshook
-
houshui
-
xia0pang
样例输出2
eshook
提示
在样例输入2中,pluskid和cerror的帖子被eshook删除了,最终的名单是:
mnxheng
quark
hzqtc
eshook
houshui
xia0pang
其中第四位是eshook。
#include<stdio.h>
#include<malloc.h>
int main()
{
struct MST
{
char name[1024];
struct MST *next;
}*head, *p, *pt;
int i, n, j;
char temp[1024];
head=malloc(sizeof(struct MST));
p=head;
scanf("%d", &n);
scanf("%s", temp);
while(!feof(stdin))
{
if(temp[0]!='-')
{
j=0;
while((p->name[j]=temp[j])!=0) j++;
p->next=malloc(sizeof(struct MST));
p=p->next;
}
else if(temp[0]=='-')
{
pt=head->next;
free(head);
head=pt;
}
scanf("%s", temp);
}
p->next=NULL;
for(i=0,p=head;i<n-1;i++)
p=p->next;
puts(p->name);
}