Пример #1
0
Stat getStat0(int m){
    Stat S;
    set<int> cur;
    for (int i = 0; i < 5; i++) if (maskGet(m, i)) {
        if (i != 0 && !maskGet(m, i - 1) ){
            if (!cur.empty()) S.insert(cur);
            cur.clear();
        }
        cur.insert(i);
    }
    if (!cur.empty()) S.insert(cur);
    return S;
}
Пример #2
0
void SScombine(Stat &S, int i, int j){
    Stat::iterator iti = SSfind(S, i);
    Stat::iterator itj = SSfind(S, j);
    if (iti == itj) return;
    set<int> s(*iti);
    for (set<int>::iterator it = itj->begin(); it != itj->end(); it++){
        s.insert(*it);
    }
    S.erase(iti);
    S.erase(itj);
    S.insert(s);
}
Пример #3
0
void SSinsertNew(Stat &S, int i){
    set<int> s;
    s.insert(i); S.insert(s);    
}
Пример #4
0
void SSinsert(Stat &S, int i, int j){
    Stat::iterator it = SSfind(S, j);
    assert(it != S.end());
    set<int> s(*it); S.erase(it);
    s.insert(i); S.insert(s);    
}