HDU1873——数据结构题

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

 

  涉及队列的概念,我并没有使用STL中的queue,因为这道题要求每个队列按照优先级动态调整队列先后次序,而且排序一定要是稳定的,所以我使用的是数组存放元素,并使用插入排序来处理优先级的排序问题。

 

#include<iostream> #include<string> using namespace std; struct Patient { int k; int b; }; Patient pa[2005]; Patient pb[2005]; Patient pc[2005]; int ai,bi,ci; void insertElement(Patient p[],int &i,int b,int k) { int j,t; if(i==0) { p[0].k=k; p[0].b=b; } else { for(j=i;j>=0;j--) { if(p[j].b>=b)break; } for(t=i;t>j;t--) { p[t+1].b=p[t].b; p[t+1].k=p[t].k; } p[j+1].b = b; p[j+1].k = k; } i++; } void Get(Patient p[],int &i) { int j; if(i==0) cout<<"EMPTY"<<endl; else { cout<<p[0].k<<endl; for(j=0;j<i;j++) { p[j].b=p[j+1].b; p[j].k=p[j+1].k; } i--; } } int main() { int i,N,a,b; string s; while(cin>>N) { int k = 1; ai=bi=ci=0; memset(pa,0,2005); memset(pb,0,2005); memset(pc,0,2005); for(i=0;i<N;i++) { cin>>s; if(s.compare("IN")==0) { cin>>a>>b; switch(a) { case 1:insertElement(pa,ai,b,k);break; case 2:insertElement(pb,bi,b,k);break; case 3:insertElement(pc,ci,b,k);break; } k++; } else { cin>>a; switch(a) { case 1:Get(pa,ai);break; case 2:Get(pb,bi);break; case 3:Get(pc,ci);break; } } } } return 0; }

你可能感兴趣的:(数据结构,String,BI,ini)