Submission #72274

# Submission time Handle Problem Language Result Execution time Memory
72274 2018-08-26T06:40:25 Z (#2175, xdoju, kazel, pps789) Chocolate Cookie Machine (FXCUP3_chocolate) C++17
0 / 100
2958 ms 109244 KB
#include<bits/stdc++.h>
using namespace std;

namespace fio {
    const int BSIZE = 524288;
    char buffer[BSIZE];
    int p = BSIZE;
    inline char readChar() {
        if(p == BSIZE) {
            fread(buffer, 1, BSIZE, stdin);
            p = 0;
        }
        return buffer[p++];
    }
    int readInt() {
        char c = readChar();
        while (c < '0' || c > '9') {
            c = readChar();
        }
        int ret = 0;
        while (c >= '0' && c <= '9') {
            ret = ret * 10 + c - '0';
            c = readChar();
        }
        return ret;
    }

    bool isB() {
      char c = readChar();
      while(c != 'B' && c != 'O') c = readChar();
      return c == 'B';
    }
}

bool b[300005];
set<int> c[300005], ans;

void ok(int x) {
  for(int i : c[x]) {
    ans.erase(i);
  }
}

void boom(int x) {
  if(b[x]) return;
  set<int> nans;
  for(int i : ans) {
    if(c[x].count(i)) nans.insert(i);
  }
  swap(ans,nans);
}

vector<pair<int,bool>> query;

int main() {
  int n = fio::readInt(), m = fio::readInt(), k = fio::readInt();
  for(int i=0;i<m;i++) {
    int x = fio::readInt();
    b[x] = true;
  }
  for(int i=0;i<k;i++) {
    int x = fio::readInt(), y = fio::readInt();
    c[y].insert(x);
    c[x].insert(y);
  }
  bool allb = true;
  int q = fio::readInt();
  for(int i=0;i<q;i++) {
    int x = fio::readInt();
    bool y = fio::isB();
    allb &= y;
    query.emplace_back(x,y);
  }
  random_shuffle(query.begin(), query.end());
  if(query.back().second) {
    int x = query.back().first;
    for(int i : c[x]) ans.insert(i);
    for(int i=1;i<=n;i++) if(b[i]) ans.insert(i);
  } else {
    int x = query.back().first;
    for(int i=1;i<=n;i++) if(!b[i]) ans.insert(i);
    for(int i : c[x]) ans.erase(i);
  }
  query.pop_back();
  for(auto & p : query) {
    if(p.second) boom(p.first);
    else ok(p.first);
  }
  if(allb) for(int i=1;i<=n;i++) {
    if(b[i]) ans.insert(i);
  }
  printf("%zd\n",ans.size());
  for(int i : ans) printf("%d\n",i);
}

Compilation message

chocolate.cpp: In function 'char fio::readChar()':
chocolate.cpp:10:18: warning: ignoring return value of 'size_t fread(void*, size_t, size_t, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
             fread(buffer, 1, BSIZE, stdin);
             ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 14 ms 14456 KB Output is correct
2 Correct 15 ms 14456 KB Output is correct
3 Correct 24 ms 15516 KB Output is correct
4 Correct 828 ms 43236 KB Output is correct
5 Correct 16 ms 43236 KB Output is correct
6 Incorrect 16 ms 43236 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Incorrect 2958 ms 109244 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 14 ms 14456 KB Output is correct
2 Correct 15 ms 14456 KB Output is correct
3 Correct 24 ms 15516 KB Output is correct
4 Correct 828 ms 43236 KB Output is correct
5 Correct 16 ms 43236 KB Output is correct
6 Incorrect 16 ms 43236 KB Output isn't correct