Submission #1322386

#TimeUsernameProblemLanguageResultExecution timeMemory
1322386wangzhiyi33Last supper (IOI12_supper)C++20
43 / 100
78 ms4152 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...