http://acm.hdu.edu.cn/showproblem.php?pid=4557
解决一类问题的set用法
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include <map> using namespace std ; char na[1005][20] ; int main() { int T ; scanf("%d",&T) ; multiset <int> S[25] ; for(int cas=1 ;cas<=T ;cas++) { for(int i=0 ;i<25 ;i++) S[i].clear() ; int n ; scanf("%d",&n) ; printf("Case #%d:\n",cas) ; int cnt=0 ; int num=1 ; while(n--) { char op[5] ; scanf("%s",op) ; if(op[0]==‘A‘) { int x ; scanf("%s%d",na[num],&x) ; S[x].insert(num++) ; printf("%d\n",++cnt) ; } else { int x ; scanf("%d",&x) ; int flag=0 ; for(int i=x ;i<=20 ;i++) { if(!S[i].empty()) { multiset <int>::iterator it ; it=S[i].lower_bound(1) ; if(it!=S[i].end()) { flag=1 ; printf("%s\n",na[*it]) ; S[i].erase(it) ; cnt-- ; break ; } } } if(!flag) { puts("WAIT...") ; } } } } return 0 ; }
HDU 4557
时间: 2024-10-07 21:20:09