Submission #1151065

#TimeUsernameProblemLanguageResultExecution timeMemory
1151065KhoaDuy최후의 만찬 (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...