Example #1
0
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();
  }
Example #2
0
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";
}
Example #3
0
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";
  }
Example #4
0
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);
  }
}