首页 > 代码库 > HDU 4557

HDU 4557

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 ;}
View Code