#include<bits/stdc++.h>
using namespace std;
#include "advisor.h"
const int maxn=1e5;
int prv[maxn+2],nxt[maxn+2];
int mana[maxn+2],a[maxn+2];
bool dlm[maxn+2],bit[maxn+2];
void ComputeAdvice(int *c, int n, int k, int m) {
for(int q=0;q<k;q++){
a[q]=q;
}
for(int q=k;q<n+k;q++){
a[q]=c[q-k];
}
for(int q=0;q<n;q++)mana[q]=-1;
for(int q=0;q<n+k;q++){
prv[q]=mana[a[q]];
mana[a[q]]=q;
}
for(int q=0;q<n;q++)mana[q]=maxn+2;
for(int q=n+k-1;q>=0;q--){
nxt[q]=mana[a[q]];
mana[a[q]]=q;
}
set<pair<int,int> >st;
for(int q=0;q<k;q++){
st.insert({nxt[q],q});
dlm[q]=true;
}
for(int q=k;q<n+k;q++){
if(dlm[a[q]]){
st.erase({q,prv[q]});
st.insert({nxt[q],q});
bit[prv[q]]=true;
}
else{
pair<int,int>apa=*st.rbegin();
st.erase(apa);
dlm[a[apa.second]]=false;
st.insert({nxt[q],q});
dlm[a[q]]=true;
}
}
for(int q=0;q<2*n;q++){
WriteAdvice(bit[q]);
}
}
#include<bits/stdc++.h>
using namespace std;
#include "assistant.h"
void Assist(unsigned char *a, int n, int k, int r) {
set<int>ya,ga;
for(int q=0;q<k;q++){
if((int)(a[q])==0){
ga.insert(q);
}
else{
ya.insert(q);
}
}
for(int q=k;q<n+k;q++){
int brp=GetRequest();
if(ya.count(brp)){
}
else{
int apa=*ga.rbegin();
ga.erase(apa);
PutBack(apa);
ya.insert(brp);
}
if((int)(a[q])==0){
ya.erase(brp);
ga.insert(brp);
}
}
}
| # | 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... |