#include "advisor.h"
#include <bits/stdc++.h>
using namespace std;
int pos[100005], nxt[100005];
pair<int, int> ins[100005];
set<pair<int, int> > s;
void ComputeAdvice(int *c, int n, int k, int m)
{
    for (int i=0; i<n; i++)
        pos[i]=n, ins[i]={1, -1};
    for (int i=n-1; i>=0; i--)
    {
        nxt[i]=pos[c[i]];
        pos[c[i]]=i;
    }
    for (int i=0; i<k; i++)
    {
        s.insert({-pos[i], i});
        ins[i]={-pos[i], i};
    }
    vector<int> v(n+k, 0);
    for (int i=0; i<n; i++)
    {
        if (ins[c[i]].first<=0)
        {
            v[s.find(ins[c[i]])->second]=1;
            s.erase(ins[c[i]]);
        }
        else
        {
            if (s.begin()->second<k)
                ins[s.begin()->second]={1, -1};
            else
                ins[c[s.begin()->second-k]]={1, -1};
            s.erase(s.begin());
        }
        s.insert({-nxt[i], k+i});
        ins[c[i]]={-nxt[i], k+i};
    }
    for (int i=0; i<n+k; i++)
        WriteAdvice(v[i]);
}
#include "assistant.h"
#include <bits/stdc++.h>
using namespace std;
pair<int, int> p[100005];
set<pair<int, int> > t;
void Assist(unsigned char *a, int n, int k, int r)
{
    for (int i=0; i<n; i++)
        p[i]={-1, -1};
    for (int i=0; i<k; i++)
    {
        t.insert({a[i], i});
        p[i]={a[i], i};
    }
    for (int i=k; i<k+n; i++)
    {
        int c=GetRequest();
        if (p[c].first>=0)
            t.erase(p[c]);
        else
        {
            PutBack(t.begin()->second);
            p[t.begin()->second]={-1, -1};
            t.erase(t.begin());
        }
        t.insert({a[i], c});
        p[c]={a[i], c};
    }
}
| # | 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... |