HDOJ1873 看病要排队

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1873

 

代码:

#include<stdio.h> #include<string.h> #include<stdlib.h> struct patient{//病人信息数据结构定义; int id;//病人编号; int prior;//病人优先级; }p[3][2001];//3个队列,对应3个医生; int main(){ int N; while(scanf("%d",&N)!=EOF){ int i,j,cnt=0;//记录病人编号; int count[3]={0};//记录各医生队列长度; for(i=0;i<N;i++){ int A,B;//A:医生,B:优先级; char s[4]; getchar();//接受回车符; scanf("%s",s); if(strcmp(s,"IN")==0){//输入IN事件; scanf("%d %d",&A,&B); //printf("%s %d %d/n",s,A,B); cnt++;//病人编号增1; //printf("%d**********/n",cnt); if(count[A-1]==0){//病人队列为空; p[A-1][0].id=cnt; p[A-1][0].prior=B; } else{ for(j=count[A-1]-1;j>=0;j--){//数组元素移动; if(p[A-1][j].prior>=B)break; p[A-1][j+1].id=p[A-1][j].id; p[A-1][j+1].prior=p[A-1][j].prior; } //插入病人记录; p[A-1][j+1].id=cnt; p[A-1][j+1].prior=B; } count[A-1]++;//病人队列长度增加1; } else{ scanf("%d",&A); if(count[A-1]==0){//医生A队列空; printf("EMPTY/n"); } else{ printf("%d/n",p[A-1][0].id); for(j=0;j<count[A-1]-1;j++){ p[A-1][j].id=p[A-1][j+1].id; p[A-1][j].prior=p[A-1][j+1].prior; } p[A-1][count[A-1]].id=0; p[A-1][count[A-1]].prior=0; count[A-1]--;//病人数量减一; } } } } }

转载于:https://www.cnblogs.com/xiajun/archive/2011/02/26/2282858.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值