Submission #463835

#TimeUsernameProblemLanguageResultExecution timeMemory
463835dutchLast supper (IOI12_supper)C++17
100 / 100
78 ms6056 KiB
#include <bits/stdc++.h> using namespace std; #include "advisor.h" void ComputeAdvice(int *C, int N, int K, int M){ int next[N], last[N]; fill(last, last+N, N); bool on[N], r[N+K] = {}; for(int i=N; --i>=0; ){ next[i] = last[C[i]]; last[C[i]] = i; on[i] = i < K; } priority_queue<array<int, 2>> q; for(int i=0; i<N; ++i){ if(i < K) q.push({last[i], i}); last[i] = i < K ? i : -1; } for(int i=0; i<N; ++i){ if(!on[C[i]]){ while(!on[q.top()[1]]) q.pop(); int j = q.top()[1]; q.pop(); r[last[j]] = !(on[j] = 0); } q.push({next[i], C[i]}); on[C[i]] = 1; last[C[i]] = K + i; } for(int i=0; i<N+K; ++i) WriteAdvice(r[i]); }
#include <bits/stdc++.h> using namespace std; #include "assistant.h" void Assist(unsigned char *A, int N, int K, int R){ vector<int> s; bool on[N] = {}; for(int i=0; i<K; ++i){ on[i] = 1; if(!!A[i]) s.push_back(i); } for(int i=0; i<N; ++i){ int j = GetRequest(); if(!on[j]){ PutBack(s.back()); on[s.back()] = 0; s.pop_back(); on[j] = 1; } if(!!A[K+i]) s.push_back(j); } }
#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...