Submission #1035215

#TimeUsernameProblemLanguageResultExecution timeMemory
1035215thinknoexitLast supper (IOI12_supper)C++17
0 / 100
266 ms82840 KiB
#include "advisor.h" #include <bits/stdc++.h> using namespace std; using ll = long long; int n; void ComputeAdvice(int* C, int _N, int K, int M) { n = _N; int bit = 31 - __builtin_clz(n - 1); for (int j = 0;j < n;j++) { for (int i = bit;i >= 0;i--) { WriteAdvice((C[j] >> i) & 1); } } }
#include "assistant.h" #include <bits/stdc++.h> using namespace std; using ll = long long; int n; bool in[100100]; queue<int> q[100100]; void Assist(unsigned char* A, int _N, int K, int R) { n = _N; int bit = 31 - __builtin_clz(n - 1); for (int i = 0;i < R; i += bit) { int now = 0; for (int j = i;j < i + bit;j++) now = (now << 1) | A[j]; q[now].push(i / bit); } for (int i = 0;i < n;i++) q[i].push(n), in[i] = 1; set<pair<int, int>, greater<pair<int, int>>> s; for (int i = 0;i < K;i++) s.insert({ q[i].front(), i }); for (int i = 0;i < n;i++) { int req = GetRequest(); int prev = q[req].front(); q[req].pop(); if (in[req]) { s.erase({ prev, req }); s.insert({ q[req].front(), req }); continue; } auto x = s.begin(); PutBack(x->second); in[x->second] = 0; s.erase(x); in[req] = 1; s.insert({ q[req].front(), req }); } }
#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...