제출 #1154154

#제출 시각아이디문제언어결과실행 시간메모리
1154154byunjaewooLast supper (IOI12_supper)C++20
0 / 100
56 ms4680 KiB
#include <bits/stdc++.h> using namespace std; #include "advisor.h" void ComputeAdvice(int *C, int N, int K, int M) { vector<int> X(N+K, 0); for(int i=0; i<K; i++) X[i]=C[i]; for(int i=K; i<N+K; i++) X[i]=C[i-K]; set<pair<int, int>> st; vector<int> lst(N, 0), nxt(N+K, N+1); vector<bool> chk(N, false), ret(N+K, true); for(int i=N+K-1; i>=0; i--) { if(lst[X[i]]) nxt[i]=lst[X[i]]; lst[X[i]]=i; } fill(lst.begin(), lst.end(), 0); for(int i=0; i<K; i++) chk[i]=true, lst[i]=i, st.insert({nxt[i], i}); for(int i=0; i<N; i++) { if(!chk[C[i]]) ret[st.rbegin()->second]=false, chk[X[st.rbegin()->second-K]]=false, st.erase(prev(st.end())); else st.erase({i, lst[C[i]]}); st.insert({nxt[K+i], C[i]}), chk[C[i]]=true, lst[C[i]]=i; } for(int i=0; i<N+K; i++) WriteAdvice(ret[i]); }
#include <bits/stdc++.h> using namespace std; #include "assistant.h" void Assist(unsigned char *A, int N, int K, int R) { set<pair<int, int>> st; vector<bool> chk(N, false); vector<int> lst(N, 0); vector<int> X(N+K, 0); for(int i=0; i<K; i++) X[i]=i, st.insert({A[i], i}), chk[i]=true, lst[i]=i; for(int i=0; i<N; i++) { X[K+i]=GetRequest(); if(!chk[X[K+i]]) chk[X[st.begin()->second]]=false, PutBack(X[st.begin()->second]), st.erase(st.begin()); else st.erase({A[lst[X[K+i]]], lst[X[K+i]]}); st.insert({A[K+i], K+i}), chk[X[K+i]]=true, lst[X[K+i]]=i; } }
#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...