HDOJ 5071 Chat 模拟(三)
i
chat[mxp].pro) { mxp=pos; } } pos=mxp; ///split int bc=chat[pos].back; int ft=chat[pos].front; chat[bc].front=ft; chat[ft].back=bc; ///merge chat[pos].front=HEAD; chat[pos].back=chat[HEAD].back; chat[chat[HEAD].back].front=pos; chat[HEAD].back=pos; } void Choose(int u) { if(pc.count(u)==0) { puts("invalid priority."); return ; } puts("success."); int pos=HEAD; for(pos=HEAD;pos!=TAIL;pos=chat[pos].back) { if(chat[pos].pro==u) break; } ///split int bc=chat[pos].back; int ft=chat[pos].front; chat[bc].front=ft; chat[ft].back=bc; ///merge chat[pos].front=HEAD; chat[pos].back=chat[HEAD].back; chat[chat[HEAD].back].front=pos; chat[HEAD].back=pos; } void Top(int u) { if(pc.count(u)==0) { puts("invalid priority."); return ; } puts("success."); alwayson=u; } void Untop() { if(alwayson==-1) { puts("no such person."); return ; } alwayson=-1; puts("success."); } void saybyebye() { if(alwayson!=-1) { int p=HEAD; for(p=HEAD;p!=TAIL;p=chat[p].back) { if(chat[p].pro==alwayson) break; } if(chat[p].w) printf("Bye %d: %I64d\n",chat[p].pro,chat[p].w); } int pos=HEAD; for(pos=chat[HEAD].back;pos!=TAIL;pos=chat[pos].back) { if(chat[pos].pro!=alwayson&&chat[pos].w) printf("Bye %d: %I64d\n",chat[pos].pro,chat[pos].w); } } int main() { int T_T; scanf("%d",&T_T); while(T_T--) { init(); scanf("%d",&n); for(int i=0;i