#include "advisor.h"
#include<bits/stdc++.h>
using namespace std;
void ComputeAdvice(int *C,int n,int k,int m){
assert(n>1&&k<n&&k>0);
int c[n+k];
for(int i=0;i<n;i++){
c[k+i]=C[i];
}
for(int i=0;i<k;i++){
c[i]=i;
}
int state[n+k]={0};
int last[n];
for(int i=0;i<n;i++){
last[i]=n+k;
}
int nxt[n+k];
for(int i=n+k-1;i>=0;i--){
nxt[i]=last[c[i]];
last[c[i]]=i;
}
set<pair<int,int>> se;
for(int i=0;i<k;i++){
se.insert({nxt[i],i});
}
for(int i=k;i<n+k;i++){
set<pair<int,int>>::iterator it=se.begin();
assert((*it).first>=i);
if((*it).first==i){
se.erase(it);
}
else{
it=se.end();
it--;
state[(*it).second]=1;
se.erase(it);
}
se.insert({nxt[i],i});
}
unsigned char bruh0='0',bruh1='1';
for(int i=0;i<n+k;i++){
if(state[i]==0){
WriteAdvice(0);
}
else{
WriteAdvice(1);
}
}
}
#include "assistant.h"
#include<bits/stdc++.h>
using namespace std;
void Assist(unsigned char *A,int n,int k,int r){
set<int> se,se1;
for(int i=0;i<k;i++){
if(A[i]){
se1.insert(i);
}
else{
se.insert(i);
}
}
for(int i=k;i<n+k;i++){
int c=GetRequest();
if(se.find(c)!=se.end()){
se.erase(c);
}
else{
//assert(se1.find(c)==se1.end());
set<int>::iterator it=se1.begin();
PutBack((*it));
se1.erase(it);
}
if(A[i]){
se1.insert(i);
}
else{
se.insert(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... |