Submission #1151065

#TimeUsernameProblemLanguageResultExecution timeMemory
1151065KhoaDuyLast supper (IOI12_supper)C++20
0 / 100
47 ms4400 KiB
#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){
    string trans="";
    assert(r==n+k);
    for(int i=0;i<r;i++){
        trans+=A[i];
    }
    set<int> se,se1;
    for(int i=0;i<k;i++){
        if(trans[i]=='0'){
            se.insert(i);
        }
        else{
            se1.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(trans[i]=='0'){
            se.insert(c);
        }
        else{
            se1.insert(c);
        }
    }
}
#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...