2726:Holiday Hotel

keyword

半順序集合 C++

概要

[0,10^4]^2に(x1,y1) < (x2,y2) <==> x1

int main(){
    int n, d, c, i, j;
    while(n = readint(), n){
        vector< pair<int,int> > cans1, cans2;
        vector<int> is;
        cans1.reserve(n+1);
        cans2.reserve(n+1);
        is.reserve(n+1);
        REP(i,n) cans1.PB( MP(readint(), readint()) );

        sort(ALL(cans1));
        int miCost = 1<<30;
        REP(i,n){
            if(miCost > cans1[i].second){
                is.PB(i);
                miCost = cans1[i].second;
            }
        }
        EACH(is,it){
            cans2.PB( MP(cans1[*it].second, cans1[*it].first) );
        }

        sort(ALL(cans2));
        is.clear();
        int miDist = 1<<30;
        int ret = 0;
        EACH(cans2,it){
            if(miDist > it->second){
                ret++;
                miDist = it->second;
            }
        }

        printf("%d\n",ret);
    }

    return 0;
}