Submission #412760

#TimeUsernameProblemLanguageResultExecution timeMemory
412760KoDLast supper (IOI12_supper)C++17
25 / 100
587 ms21928 KiB
#include <bits/stdc++.h> #include "advisor.h" template <class T> using Vec = std::vector<T>; void write(const int width, const int bit) { for (int i = 0; i < width; ++i) { WriteAdvice(bit >> i & 1); } } void ComputeAdvice(int *C, int N, int K, int M) { Vec<Vec<int>> idx(N); for (int i = 0; i < N; ++i) { idx[i].push_back(N); } for (int i = N - 1; i >= 0; --i) { idx[C[i]].push_back(i); } std::map<int, int> map; std::set<std::pair<int, int>> que; for (int i = 0; i < K; ++i) { map[i] = i; que.emplace(idx[i].back(), i); } for (int i = 0; i < N; ++i) { if (que.find(std::make_pair(idx[C[i]].back(), C[i])) == que.end()) { const auto [t, j] = *que.rbegin(); que.erase(std::make_pair(t, j)); write(N <= 5000 ? 13 : 15, map[j]); map[C[i]] = map[j]; } else { write(N <= 5000 ? 13 : 15, K); que.erase(std::make_pair(idx[C[i]].back(), C[i])); } idx[C[i]].pop_back(); que.emplace(idx[C[i]].back(), C[i]); } }
#include <bits/stdc++.h> #include "assistant.h" template <class T> using Vec = std::vector<T>; int read(unsigned char *A, const int width) { static int idx = 0; int bit = 0; for (int i = 0; i < width; ++i) { if (A[idx++]) { bit += 1 << i; } } return bit; } void Assist(unsigned char *A, int N, int K, int R) { std::map<int, int> map; Vec<int> cur(K); for (int i = 0; i < K; ++i) { cur[i] = i; } for (int i = 0; i < N; ++i) { const auto c = GetRequest(); const auto k = read(A, N <= 5000 ? 13 : 15); if (k != K) { const auto j = cur[k]; PutBack(j); cur[k] = 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...