#include<bits/stdc++.h>
#include "advisor.h"
using namespace std;
void ComputeAdvice(int *C, int n, int k, int m){
if(n <= 5000 && m == 65000){
for(int i = 0; i < n; i++){
for(int j = 0; j < 13; j++){
WriteAdvice((1 << j & C[i]) ? 1 : 0);
}
}
return;
}
}
#include<bits/stdc++.h>
#include "assistant.h"
using namespace std;
void Assist(unsigned char *A, int n, int k, int R){
if(n <= 5000 && R == 13 * n){
vector<int>C;
vector<vector<int>>p(n);
for(int i = 0; i < n; i++){
int num = 0;
for(int j = 0; j < 13; j++){
if(A[i * 13 + j] == 1){
num |= 1 << j;
}
}
C.emplace_back(num);
p[num].emplace_back(i);
}
for(int i = 0; i < n; i++){
reverse(p[i].begin(), p[i].end());
}
vector<int>scaf(k);
iota(scaf.begin(), scaf.end(), 0);
for(int i = 0; i < n; i++){
int color = GetRequest();
if(find(scaf.begin(), scaf.end(), color) == scaf.end()){
int candidate = 0;
for(int i = 1; i < scaf.size(); i++){
int x = scaf[i];
while(!p[x].empty() && p[x].back() <= i){
p[x].pop_back();
}
if(p[x].empty() || (!p[scaf[candidate]].empty() && p[scaf[candidate]].back() < p[x].back())){
candidate = i;
}
}
PutBack(scaf[candidate]);
swap(scaf[candidate], scaf.back());
scaf.pop_back();
scaf.emplace_back(color);
}
}
return;
}
}
# | 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... |