Submission #624994

#TimeUsernameProblemLanguageResultExecution timeMemory
624994pirhosigLast supper (IOI12_supper)C++17
100 / 100
570 ms8132 KiB
#include "advisor.h" #include <bits/stdc++.h> #define R(a) for (int i = 0; i < a; ++i) #define ii pair<int, int> using namespace std; void ComputeAdvice(int *C, int N, int K, int M) { vector<int> nxt(N, INT_MAX); vector<int> val(N); for (int i = N - 1; i >= 0; --i) { int a = C[i]; val[i] = nxt[a]; nxt[a] = i; } vector<bool> init(K); vector<bool> rem(N); priority_queue<ii> que; R(K) { que.push({nxt[i], i}); } vector<bool> has(N); vector<int> last(N, -1); R(K) { has[i] = true; } R(N) { int a = C[i]; if (!has[a]) { has[a] = true; int b = que.top().second; que.pop(); if (last[b] == -1) init[b] = true; else rem[last[b]] = true; has[b] = false; } last[a] = i; que.push({val[i], a}); } R(K) { if (init[i]) WriteAdvice(1); else WriteAdvice(0); } R(N) { if (rem[i]) WriteAdvice(1); else WriteAdvice(0); } }
#include "assistant.h" #include <bits/stdc++.h> #define R(a) for (int i = 0; i < a; ++i) #define ii pair<int, int> using namespace std; void Assist(unsigned char *A, int N, int K, int R) { queue<int> rem; set<int> val; R(K) { cerr << "A " << (int)(A[i]) << endl; } cerr << "N\n"; R(N) { cerr << "A " << (int)(A[K + i]) << endl; } R(K) { val.insert(i); if (A[i]) rem.push(i); } R(N) { int a = GetRequest(); if (!val.count(a)) { val.insert(a); int b = rem.front(); PutBack(b); val.erase(b); rem.pop(); } if (A[K + i]) rem.push(a); } }
#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...