HDU 4557 非诚勿扰 STL set

西山居的复赛第一题

8375841 2013-05-24 23:57:27 Accepted 4557 62MS 300K 2364 B C++ CSUST_FoRever

当时傻逼了一个结构体的值没赋导致了几次WA...非常无语

set的用法真的很强大今天算是完整的学习了一下...只是数据太水了导致题目很水...

做法就是low_bound()函数直接返回比查询值大的迭代器 + 重载<运算符...

struct person{
    char name[50];
    int power;
    int time;
}temp;
bool operator < (person a,person b){
    if(a.power == b.power) return a.time < b.time;
    else return a.power < b.power;
}
int T,n,x;
char a[10];
int main(){
    cin>>T;
    for(int k = 1 ; k <= T ; k++){
        set<person> s;
        printf("Case #%d:\n",k);
        cin>>n;
        for(int t = 1 ; t <= n ; t++){
            cin>>a;
            if(a[0] == 'A'){
                cin>>temp.name>>temp.power;
                temp.time = t;
                s.insert(temp);
                cout<<s.size()<<endl;
            }
            else{
                cin>>x;
                temp.power = x;
                temp.time = -1;
                set<person>::iterator it = s.lower_bound(temp);
                if(it->name[0]>'z' || it->name[0]<'a') {
                        cout<<"WAIT..."<<endl;
                        continue;
                }
                else{
                    cout<<it->name<<endl;
                    s.erase(it);
                }
            }
        }
    }
    return 0;
}

 

posted @ 2013-05-24 23:55  Felix_F  阅读(330)  评论(0)    收藏  举报