#include<bits/stdc++.h>
#include "advisor.h"
using namespace std;
void ComputeAdvice(int *C, int N, int K, int M) {
vector<queue<int>> v(N);
for (int i=0; i<N; i++) v[C[i]].push(i);
for (int i=0; i<N; i++) v[i].push(N);
set<pair<int,int>> s;
for (int i=0; i<K; i++) s.insert({-v[i].front(), i});
vector<int> m(K+N, 0);
unordered_map<int,int> um;
for (int i=0; i<K; i++) um[i] = i;
for (int i=0; i<N; i++){
if (s.find({-v[C[i]].front(), C[i]}) != s.end()){
m[um[C[i]]] = 1;
s.erase({-v[C[i]].front(), C[i]});
}
else s.erase(s.begin());
v[C[i]].pop();
s.insert({-v[C[i]].front(), C[i]});
um[C[i]] = K+i;
}
for (int x : m) WriteAdvice(x);
}
#include<bits/stdc++.h>
#include "assistant.h"
using namespace std;
void Assist(unsigned char *A, int N, int K, int R) {
unordered_set<int> a, b;
for (int i=0; i<K; i++){
if (A[i]) a.insert(i);
else b.insert(i);
}
for (int i=0; i<N; i++){
int cur = GetRequest();
if (a.find(cur) == a.end()){
PutBack(*b.begin());
b.erase(b.begin());
}
else a.erase(cur);
if (A[i+K]) a.insert(cur);
else b.insert(cur);
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |