05:分配病房
- 總時間限制:
- 1000ms
- 內存限制:
- 65536kB
- 描述
-
某個科室的病房分爲重症和普通,只有當病人的疾病嚴重程度超過了入住重症病房的最低嚴重值,纔可以安排入住重症病房。
現在要求設計一個程序,給病人安排好病房。疾病的嚴重程度用0到10來表示,0表示小毛病,10表示非常嚴重。 - 輸入
- 第一行輸入病人的個數m(m < 50),以及安排住入重症病房的最低嚴重值a
緊接着m行,每行表示病人編號(三個位,用0補齊)及其疾病的嚴重程度(浮點數,1位小數)。
每個病人的疾病嚴重程度都不一樣。 - 輸出
- 要求按照病人的嚴重程度輸出住在重症病房裏的病人的編號
注意:
如果當前所有病人的嚴重程度並不滿足住在重症病房裏,則輸出“None.”(不包括引號) - 樣例輸入
-
10 7.55 006 6.5 005 8.0 004 3.5 009 8.5 011 7.0 043 9.5 003 5.0 103 6.0 112 4.0 118 9.0
- 樣例輸出
-
043 9.5 118 9.0 009 8.5 005 8.0
-
-
-
#include<stdio.h> #define N 50 void judge(int *pid,float *pse,int n,float level,int count[]); void sorts(int count[],int *pid,float *pse,int n); void st(int count[],int id[],float se[],int n); int k = 0; int main() { int num = 0;//病人的個數 float level = 0.0;//住入病房的最低嚴重值 int id[N]; float se[N]; int count[N]; scanf("%d %f",&num,&level); for(int i=0;i<num;i++) { scanf("%d %f",&id[i],&se[i]); } judge(id,se,num,level,count); //sorts(count,id,se,num); st(count,id,se,k); if(k==0) printf("None."); else{ for(int i=0;i<k;i++)//正常輸出 { printf("%03d %.1f",id[count[i]],se[count[i]]); if(i<k-1) printf("\n"); } } return 0; } //判斷是否達到入住病房的條件 void judge(int *pid,float *pse,int n,float level,int count[]) { for(int i=0;i<n;i++) { if(*(pse+i)>=level) //是否超過了最低嚴重值 count[k++]=i; //是,將該超過最低嚴重值的id記錄到count[]中 累加k記錄達到要求的病人的個數 //printf("%03d %.1f\n",*(pid+i),*(pse+i)); } } /*void sorts(int count[],int *pid,float *pse,int n) { for(int i =0;i<n-1;i++) { for(int j=i+1;j<n;j++) { if(*(pse+count[i])<*(pse+count[j])) { int temp = count[i]; count[i] = count[j]; count[j] = temp; } } } }*/ void st(int count[],int id[],float se[],int n) { for(int i = 0;i<n-1;i++) { for(int j=i+1;j<n;j++) { if(se[count[i]]<se[count[j]]) { int temp = count[i]; count[i] = count[j]; count[j] = temp; } } } }