Submission #1022789

#TimeUsernameProblemLanguageResultExecution timeMemory
1022789boyliguanhanLast supper (IOI12_supper)C++17
0 / 100
16 ms4400 KiB
#include "advisor.h" #include<bits/stdc++.h> using namespace std; bitset<500100>onf; void RADV(int y,int bt){ for(int i=0;i<bt;i++) WriteAdvice(y&1<<i); } void ComputeAdvice(int *C, int N, int K, int M) { vector<int>nxt(N),lst(N,N),plat(K); iota(plat.begin(),plat.end(),0); C[N]=N; for(int i=N;i--;) nxt[i]=lst[C[i]], lst[C[i]]=i; set<pair<int,int>> st; for(auto i:plat)onf[i]=1, st.insert({lst[i],i}); int df=log2(2*K-1); for(int i=0;i<N;i++){ if(onf[C[i]])continue; onf[C[i]]=1; auto[x,y]=*--st.end(); st.erase({x,y}); st.insert({nxt[i],y}); onf[C[x]]=0; RADV(y,df); } }
#include "assistant.h" #include<bits/stdc++.h> using namespace std; bitset<500100>on; void Assist(unsigned char *A, int N, int K, int R) { vector<int>platter(K); iota(platter.begin(),platter.end(),0); for(auto i:platter)on[i]=1; int C=0,yy=log2(2*K-1); for(int i=0;i<N;i++){ int x=GetRequest(); if(on[x]) continue; int k=0; for(int c=0;c<yy;c++) k+=A[c+C]<<c; C+=yy; PutBack(platter[k]); on[platter[k]]=0; platter[k]=x; on[x]=1; } }
#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...