Submission #805324

#TimeUsernameProblemLanguageResultExecution timeMemory
805324aymanrsLast supper (IOI12_supper)C++14
43 / 100
190 ms13332 KiB
#include <bits/stdc++.h> using namespace std; #include "advisor.h" void ComputeAdvice(int *C, int N, int K, int M) { int L; L = log2(K-1)+1; set<pair<int, int>> q; int s[N], nx[N]; bool f[N] = {false}; fill(s, s+N, N); int c[N]; for(int i = N-1;i >= 0;i--) { nx[i] = s[C[i]]; s[C[i]] = i; } for(int i = 0;i < K;i++){ q.insert({s[i], i}); f[i] = true; c[i] = i; } for(int i = 0;i < N;i++){ if(f[C[i]]) { int ind = q.begin()->second; q.erase(q.begin()); q.insert({nx[i], ind}); continue; } int ind = q.rbegin()->second; for(int b = 0;b < L;b++) WriteAdvice(1&(ind>>b)); f[c[ind]] = false; f[C[i]] = true; c[ind] = C[i]; q.erase(prev(q.end())); q.insert({nx[i], ind}); } }
#include <bits/stdc++.h> #include "assistant.h" using namespace std; void Assist(unsigned char *A, int N, int K, int R) { int L; L = log2(K-1)+1; int c[N]; bool f[N] = {false}; for(int i = 0;i < K;i++){ f[i] = true; c[i] = i; } int cur = 0; for(int i = 0;i < N;i++){ int r = GetRequest(); if(f[r]) continue; int ind = 0; for(int b = 0;b < L;b++) { if(A[cur]) ind |= 1 << b; cur++; } PutBack(c[ind]); f[r] = true; f[c[ind]] = false; c[ind] = r; } }
#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...