Submission #571866

#TimeUsernameProblemLanguageResultExecution timeMemory
571866sofapuden최후의 만찬 (IOI12_supper)C++14
100 / 100
231 ms14324 KiB
#include <bits/stdc++.h> #include "advisor.h" using namespace std; void ComputeAdvice(int *c, int n, int k, int m) { vector<int> ord; vector<int> nxt(n+k); vector<int> prv(n+k); map<int,int> M; for(int i = 0; i < k; ++i)ord.push_back(i); for(int i = 0; i < n; ++i)ord.push_back(c[i]); for(int i = 0; i < n+k; ++i){ if(M.find(ord[i]) == M.end())prv[i] = -1; else prv[i] = M[ord[i]]; M[ord[i]] = i; } M.clear(); for(int i = n+k-1; ~i; --i){ if(!M[ord[i]])nxt[i] = n+k; else nxt[i] = M[ord[i]]; M[ord[i]] = i; } vector<int> rem(n+k,0); multiset<int> pq; for(int i = 0; i < k; ++i){ pq.insert(nxt[i]); } for(int i = k; i < n+k; ++i){ if(pq.count(i)){ pq.insert(nxt[i]); pq.erase(i); rem[prv[i]] = 1; continue; } pq.erase(prev(pq.end())); pq.insert(nxt[i]); } for(auto x : rem){ WriteAdvice(x); } }
#include <bits/stdc++.h> #include "assistant.h" using namespace std; void Assist(unsigned char *a, int n, int k, int r) { set<int> on; vector<int> ord; for(int i = 0; i < k; ++i){ on.insert(i); ord.push_back(i); } int cn = 0; int cn2 = 0; for(int i = 0; i < n; ++i){ int req = GetRequest(); ord.push_back(req); if(on.count(req))continue; while(a[cn2++] == 1)cn++; on.insert(req); on.erase(ord[cn]); PutBack(ord[cn++]); } } /* * Query types: * GetRequest() * PutBack(int x) * */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...