Submission #363107

#TimeUsernameProblemLanguageResultExecution timeMemory
363107SeanliuLast supper (IOI12_supper)C++14
0 / 100
177 ms140652 KiB
#include "advisor.h" #include <iostream> #include <utility> #include <cassert> #include <set> #include <deque> #define pii pair<int,int> #define F first #define S second using namespace std; const int maxN = 1e5 + 326; bool has[maxN]; set<pii> st; deque<int> dq[maxN]; void ComputeAdvice(int *C, int N, int K, int M) { fill(has, has + K, 1); for(int i = 0; i < N; i++){ dq[C[i]].push_back(i); } for(int i = 0; i < K; i++){ int furt = dq[i].size() ? dq[i].front() : maxN; st.insert({furt, i}); } int bitcount = 0; while((1 << bitcount) < N + 1) bitcount++; for(int i = 0; i < N; i++){ //thirteen bits lol int key; if(has[C[i]]) key = (1 << bitcount) - 1; else { pii nc = *st.rbegin(); st.erase(st.find(nc)); has[nc.S] = false; has[C[i]] = true; key = nc.S; } int furt = dq[C[i]].size() ? dq[C[i]].front() : maxN; st.erase(st.find({furt, C[i]})); while(dq[C[i]].size() && dq[C[i]].front() <= i) dq[C[i]].pop_front(); furt = dq[C[i]].size() ? dq[C[i]].front() : maxN; st.insert({furt, C[i]}); for(int j = 0; j < bitcount; j++){ WriteAdvice((key >> j) & 1); } } }
#include "assistant.h" void Assist(unsigned char *A, int N, int K, int R) { int bitcount = 0; while((1 << bitcount) < N + 1) bitcount++; for(int i = 0; i < N; i++){ int req = GetRequest(); int key = 0; for(int j = (i + 1) * bitcount - 1; j >= (i) * bitcount; j--){ key = key * 2 + A[j]; } if(key != (1 << bitcount) - 1) PutBack(key); } }

Compilation message (stderr)

assistant.cpp: In function 'void Assist(unsigned char*, int, int, int)':
assistant.cpp:8:7: warning: unused variable 'req' [-Wunused-variable]
    8 |   int req = GetRequest();
      |       ^~~
#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...