麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

金牌、銀牌、銅牌

2019-11-10 20:16:45
字體:
來源:轉載
供稿:網友

金牌、銀牌、銅牌

Time Limit: 1000MS Memory Limit: 65536KBSubmit StatisticPRoblem DescriptionAcm——大學中四大競賽之首——是極具挑戰性的大學生競賽形式。在一場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 Input7cze 90qch 87zff 70shangcf 66zhaohq 50zhrq 46yah 20A pc 56Q zffC qch 4SA von 66OExample Outputqch 91cze 90shangcf 66pc 56zhaohq 50zhrq 46yah 20#1 : qch#2 : cze shangcf von#3 : pc zhaohq zhrq此題可以將底面代碼中的排序部分寫成一個函數的形式;#include<stdio.h>#include<stdlib.h>#include<string.h>struct node{    char s[25];    int data;    struct node *next;};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(){    int n, m;    struct node *head;    char c, t[25];    scanf("%d", &n);    head = creat(n);    while(~scanf("%c", &c))    {        if(c == 'A')        {            scanf("%s %d", t, &n);            join(head, t, n);        }        else if(c == 'Q')        {            scanf("%s", t);            delet(head, t, n);            n--;        }        else if(c == 'C')        {            scanf("%s %d", t, &m);            add(head, t, m);        }        else if(c == 'S')        {            print(head);        }        else if(c == 'O')        {            rank(head);        }    }    return 0;}struct node* creat(int n){    struct node *head, *p, *tail;    head = (struct node*)malloc(sizeof(struct node));    head->next = NULL;    tail = head;    for(int i = 0; i < n; i++)    {        p = (struct node*)malloc(sizeof(struct node));        scanf("%s %d", p->s,&p->data);        p -> next = tail -> next;        tail -> next = p;        tail = p;    }    return (head);};void delet (struct node *head, char t[], int n){    struct node *p;    p = head -> next;    for(int i = 0; i < n; i++)    {        if(p)        {            if(strcmp(p -> s, t) == 0)            {                head -> next = p -> next;                free(p);                break;            }            else            {                p = p -> next;                head = head -> next;            }        }    }}void add(struct node*head, char t[],int n){    struct node *p;    p = head -> next;    while(p)    {        if(strcmp(p -> s, t) == 0)        {            p -> data += n;            break;        }        p = p -> next;    }}void join (struct node*head, char t[], int n){    struct node *p, *q;    q = (struct node *) malloc (sizeof(struct node));    q -> data = n;    p = head -> next;    strcpy(q -> s, t);    q -> next = p -> next;    p -> next = q;    int k;    char r[25];    p = head -> next;    while(p)    {        q = p -> next;        while(q)        {            if(p -> data <= q -> data)            {                k = p -> data;                p -> data = q -> data;                q -> data = k;                strcpy(r,p -> s);                strcpy(p -> s, q -> s);                strcpy(q -> s, r);            }            q = q -> next;        }        p = p -> next;    }}void print(struct node *head){    struct node *p, *q;    int k;    char t[25];    p = head -> next;    while(p)    {        q = p -> next;        while(q)        {            if(p -> data < q -> data)            {                k = p -> data;                p -> data = q -> data;                q -> data = k;                strcpy(t,p -> s);                strcpy(p -> s, q -> s);                strcpy(q -> s, t);            }            q = q -> next;        }        p = p -> next;    }    p = head -> next;    while(p)    {        printf("%s %d/n", p -> s, p -> data);        p = p -> next;    }}void rank(struct node *head){    struct node* p,*q;    int k;    char t[25];    p = head -> next;    while(p)    {        q = p -> next;        while(q)        {            if(p -> data < q -> data)            {                k = p -> data;                p -> data = q -> data;                q -> data = k;                strcpy(t,p -> s);                strcpy(p -> s, q -> s);                strcpy(q -> s, t);            }            q = q -> next;        }        p = p -> next;    }    p = head -> next;    printf("#1 :");    while(p)    {        printf(" %s", p -> s);        k = p -> data;        p = p -> next;        head = head -> next;        if(k == p -> data && p)            continue;        else break;    }    printf("/n");    printf("#2 :");    int cnt2 = 0;    p=head->next;    while(p)    {        printf(" %s",p -> s);        cnt2 ++;        k = p -> data;        head=head->next;        p=p->next;        if(cnt2 >= 2)        {            if(k == p -> data)                continue;            else                break;        }    }    printf("/n");    printf("#3 :");    int cnt3 = 0;    p=head->next;    while(p)    {        printf(" %s",p -> s);        cnt3++;        k = p -> data;        head=head->next;        p=p->next;        if(cnt3 >= 3)        {            if(k == p -> data)                continue;            else                break;        }    }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲精品 欧美 | 亚洲精品一区国产精品丝瓜 | 色视频在线| 国产妞干网 | 国产剧情v888av | 成人免费一区二区三区在线观看 | 亚洲免费毛片基地 | 国产一级大片在线观看 | 青久草视频 | 久久影院yy6080 | 国产1区2区在线 | 黄色大片免费看 | 欧美成人午夜一区二区三区 | 狼伊千合综网中文 | 99精品在线视频观看 | 中文字幕一区在线观看视频 | 免费性爱视频 | 草人人| 毛片大全在线观看 | 美女久久 | 欧美成人一级 | 成熟女人特级毛片www免费 | 成人在线视频精品 | 91麻豆蜜桃一区二区三区 | 久久久久久久久久久久久久久伊免 | 91久久国产综合精品女同国语 | 久久久久久久亚洲精品 | 欧美不卡 | 欧美日性 | 精品一区二区三区在线观看视频 | 成人在线视频免费 | 毛片电影网址 | 国产精品久久久久久久亚洲按摩 | 国产精品视频久久久 | 91精品成人福利在线播放 | 成人免费福利视频 | 亚洲生活片 | 日韩伦理电影免费观看 | 免费在线观看成年人视频 | 91精品久久久久久久久 | 欧美交在线 |