日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

病人排队(信息学奥赛一本通-T1183)

發布時間:2025/3/17 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 病人排队(信息学奥赛一本通-T1183) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【題目描述】

病人登記看病,編寫一個程序,將登記的病人按照以下原則排出看病的先后順序:

1.老年人(年齡 >= 60歲)比非老年人優先看病。

2.老年人按年齡從大到小的順序看病,年齡相同的按登記的先后順序排序。

3.非老年人按登記的先后順序看病。

【輸入】

第1行,輸入一個小于100的正整數,表示病人的個數;

后面按照病人登記的先后順序,每行輸入一個病人的信息,包括:一個長度小于10的字符串表示病人的ID(每個病人的ID各不相同且只含數字和字母),一個整數表示病人的年齡,中間用單個空格隔開。

【輸出】

按排好的看病順序輸出病人的ID,每行一個。

【輸入樣例】

5
021075 40
004003 15
010158 67
021033 75
102012 30

【輸出樣例】

021033
010158
021075
004003
102012

【源程序】

#include<iostream> #include<cstdio> #include<cstring> using namespace std; struct node{char id[20];int age;int seq; }a[110],b[110],temp; int main() {int n,d;char s[20];int p=0,q=0,k=0;int i,j;cin>>n;for(i=1;i<=n;i++){cin>>s>>d;k++;if(d>=60){strcpy(a[p].id,s);a[p].age=d;a[p].seq=k;p++;}else{strcpy(b[q].id,s);b[q].age=d;b[q].seq=k;q++;}}for(i=0;i<p;i++)for(j=i+1;j<p;j++)if(a[i].age<a[j].age){temp=a[i];a[i]=a[j];a[j]=temp;}else if(a[i].age==a[j].age&&a[i].seq>a[j].seq){temp=a[i];a[i]=a[j];a[j]=temp;}for(i=0;i<q;i++)for(j=i+1;j<q;j++)if(b[i].seq>b[j].seq){temp=b[i];b[i]=b[j];b[j]=temp;}for(i=0;i<p;i++)cout<<a[i].id<<endl;for(i=0;i<q;i++)cout<<b[i].id<<endl;return 0; }

?

總結

以上是生活随笔為你收集整理的病人排队(信息学奥赛一本通-T1183)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。