This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "bits/stdc++.h"
#include "advisor.h"
using namespace std;
void ComputeAdvice(int *C, int N, int K, int M) {
vector <vector<int>> occ(N);
for(int i=0; i<N; i++)
occ[i].push_back(1e9);
for(int i=N-1; ~i; i--)
occ[C[i]].push_back(i);
priority_queue <pair<int ,int>> pq;
set <int> shelf;
for(int i=0; i<K; i++){
pq.push({occ[i].back() ,i});
shelf.insert(i);
}
vector <bool> seq(N+K ,1);
vector <int> lst(N ,-1);
iota(lst.begin() ,lst.begin()+K ,0);
for(int i=0; i<N; i++){
if(shelf.count(C[i]))
continue;
auto now = pq.top(); pq.pop();
assert(lst[now.second] != -1);
shelf.erase(now.second);
seq[lst[now.second]] = 0;
shelf.insert(C[i]);
occ[C[i]].pop_back();
pq.push({occ[C[i]].back() ,C[i]});
lst[C[i]] = K+i;
}
for(int i=0; i<seq.size(); i++)
WriteAdvice(seq[i]);
}
#include "bits/stdc++.h"
#include "assistant.h"
using namespace std;
void Assist(unsigned char *A, int N, int K, int R) {
vector <bool> seq(R);
for(int i=0; i<R; i++)
seq[i] = A[i];
vector <int> can_remove;
set <int> shelf;
for(int i=0; i<K; i++){
if(!seq[i])
can_remove.push_back(i);
shelf.insert(i);
}
for(int i=K; i<R; i++){
int now = GetRequest();
if(!shelf.count(now)){
PutBack(can_remove.back());
shelf.erase(can_remove.back());
can_remove.pop_back();
shelf.insert(now);
}
if(!seq[i])
can_remove.push_back(now);
}
}
Compilation message (stderr)
advisor.cpp: In function 'void ComputeAdvice(int*, int, int, int)':
advisor.cpp:36:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i=0; i<seq.size(); i++)
~^~~~~~~~~~~
# | 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... |