int main(void) { ios::sync_with_stdio(false); while (!cin.eof()) { for (int i = 0; i < 5; i++) { sets[i].clear(); } universal_set.clear(); for (;;) { string s; int n; cin >> s >> n; if (s != "R") { for (int i = 0; i < n; i++) { int k; cin >> k; sets[s[0]-'A'].insert(k); universal_set.insert(k); } } else { string query; cin >> query; State begin = query.begin(); iset ans = expr(begin); if (ans.empty()) { cout << "NULL" << endl; } else { cout << *(ans.begin()); for (set<int>::const_iterator it = ++ans.begin(); it != ans.end(); it++) { cout << ' ' << *it; } cout << endl; } break; } } cin.ignore(); cin.peek(); }
static void lookup(const iset &data, spi sp) { citer res = std::lower_bound(data.begin(), data.end(), sp); std::cout << *sp; if (res == data.end() || *res != sp) std::cout << " not found\n"; else std::cout << " found\n"; }
static void lookup(const iset& data, spi sp) { // look for stored object that matches sp citer res = lower_bound(data.begin(), data.end(), sp); cout << *sp; if (res == data.end() || *res != sp) cout << " not found\n"; else cout << " found\n"; }
iset term(State &begin) { if (*begin == 'c') { begin++; iset ret; iset s = factor(begin); set_difference( universal_set.begin(), universal_set.end(), s.begin(), s.end(), inserter(ret, ret.end())); return ret; } else { return factor(begin); } }