金牌 銀牌 銅牌

2021-07-26 16:56:10 字數 2714 閱讀 1857

time limit: 1000ms memory limit: 65536kb

submit statistic

problem description

acm——大學中四大競賽之首——是極具挑戰性的大學生競賽形式。在一場acm比賽中,乙個參賽隊伍由三人組合而成,在最短的時間內做出盡可能多的題目而且要盡量少提交錯誤**,這樣才能得到更高的排名。現在讓我們模擬一次不正規的acm比賽,假設在比賽開始後30分鐘(這時已經有不少同學提交了**,在rating中已經出現),到比賽結束前,又有新的同學提交(在rating中出現),同時rating在不斷變化著,還有一些同學因為一些原因中途退出比賽(這時rating中自動刪除,當然在正式比賽中不會有這種情況)。最後終於比賽結束啦,看看rating,都有誰能拿到獎牌呢?

input

第一行乙個整數n(n<=1000),代表開始比賽後30分鐘已經有n個人提交了**。從第二行到第n+1行每行包括名字name(小於20個字元),分數p(0<=p<=10000),同時行數代表目前排名情況,第二行的排名第一,第三行排名第二,依次類推。

從第n+2行起,每行有乙個字元,是a,q,c,s,o中的乙個:

a代表新加進rating中一名同學,緊隨其後是名字name(小於20個字元),分數p(0<=p<=10000);

q代表有一名同學退出了,接著是他的名字name(小於20個字元);

c代表有乙個人的分數發生的改變,接著是此人的名字name,他的分數加多少(分數只會增加不會減少);

s代表一次顯示此時rating的請求,這時輸出所有在rating中的同學名字及他們的分數。

o代表比賽結束。

output

對每次請求,輸出此時rating中的所有同學名字和對應分數,在比賽結束時輸出金牌獲得者(一名),銀牌獲得者(兩名),銅牌獲得者(三名)(測試資料保證此時有至少6名同學在rating上)。注意:有同學新增到rating中或者分數改變後,在rating中有和這名同學有相同的分數,那麼這名同學排在最後乙個與他有相同分數同學的後面。

example input

7cze 90

qch 87

zff 70

shangcf 66

zhaohq 50

zhrq 46

yah 20

a pc 56

q zff

c qch 4

sa von 66

oexample output

qch 91

cze 90

shangcf 66

pc 56

zhaohq 50

zhrq 46

yah 20

#1 : qch

#2 : cze shangcf von

#3 : pc zhaohq zhrq

此題可以將底面**中的排序部分寫成乙個函式的形式;

#include

#include

#include

struct node ;

struct node* creat(int n);

void delet (struct node *head, char t, int n);

void add(struct node *head, char t,int n);

void join (struct node *head, char t, int n);

void print(struct node *head);

void rank(struct node *head);

int main()

else if(c == 'q')

else if(c == 'c')

else if(c == 's')

else if(c == 'o')

} return 0; }

struct node* creat(int n)

return (head); };

void delet (struct node *head, char t, int n)

else

} }

} void add(struct node*head, char t,int n)

p = p -> next; }

}void join (struct node*head, char t, int n)

q = q -> next; }

p = p -> next; }

}void print(struct node *head)

q = q -> next; }

p = p -> next; }

p = head -> next;

while(p)

} void rank(struct node *head)

q = q -> next; }

p = p -> next; }

p = head -> next;

printf("#1 :");

while(p)

printf("\n");

printf("#2 :");

int cnt2 = 0;

p=head->next;

while(p)

} printf("\n");

printf("#3 :");

int cnt3 = 0;

p=head->next;

while(p)

} }

金牌 銀牌 銅牌

金牌 銀牌 銅牌 time limit 1000ms memory limit 65536k acm 大學中四大競賽之首 是極具挑戰性的大學生競賽形式。在一場acm比賽中,乙個參賽隊伍由三人組合而成,在最短的時間內做出盡可能多的題目而且要盡量少提交錯誤 這樣才能得到更高的排名。現在讓我們模擬一次不正...

金牌 銀牌 銅牌

time limit 1000 ms memory limit 65536 kib problem description acm 大學中四大競賽之首 是極具挑戰性的大學生競賽形式。在一場acm比賽中,乙個參賽隊伍由三人組合而成,在最短的時間內做出盡可能多的題目而且要盡量少提交錯誤 這樣才能得到更高...

金牌 銀牌 銅牌

time limit 1000 ms memory limit 65536 kib submit statistic problem description acm 大學中四大競賽之首 是極具挑戰性的大學生競賽形式。在一場acm比賽中,乙個參賽隊伍由三人組合而成,在最短的時間內做出盡可能多的題目而且...