Submission #72342

#TimeUsernameProblemLanguageResultExecution timeMemory
72342 (#118)Chocolate Cookie Machine (FXCUP3_chocolate)C++17
28 / 100
3011 ms109208 KiB
#include<bits/stdc++.h> using namespace std; namespace fio { const int BSIZE = 524288; char buffer[BSIZE+1]; int p = BSIZE; inline char readChar() { if(p == BSIZE) { buffer[fread(buffer, 1, BSIZE, stdin)] = '\n'; 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 != 'K') c = readChar(); return c == 'B'; } } int n; 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() { n = fio::readInt(); int 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; if(y && b[x]) continue; query.emplace_back(x,y); } if(query.empty()) { printf("%d\n",n); for(int i=1;i<=n;i++) printf("%d ",i); return 0; } random_shuffle(query.begin(), query.end()); if(query.back().second) { int x = query.back().first; for(int i : c[x]) 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); } } else { for(int i=1;i<=n;i++) { if(b[i]) ans.erase(i); } } printf("%zd\n",ans.size()); for(int i : ans) printf("%d ",i); puts(""); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...