Submission #624386

#TimeUsernameProblemLanguageResultExecution timeMemory
624386pirhosigLast supper (IOI12_supper)C++17
0 / 100
150 ms15812 KiB
#include "advisor.h" #include <bits/stdc++.h> #define R(a) for (int i = 0; i < a; ++i) #define ii pair<int, int> using namespace std; void ComputeAdvice(int *C, int N, int K, int M) { unordered_map<int, vector<int>> mpa; R(N) { int a = C[i]; mpa[a].push_back(i); } unordered_set<int> val; R(K) { val.insert(i); } priority_queue<ii> que; R(K) { if (!mpa[i].size()) que.push({INT_MAX, i}); else que.push({mpa[i][0], i}); } bool init[K] {}; bool rem[N] {}; vector<int> last(N, -1); R(N) { int a = C[i]; last[a] = i; if (val.count(a)) continue; auto b = que.top(); que.pop(); int c = b.second; if (last[c] == -1) init[c] = true; rem[last[c]] = true; auto it = upper_bound(mpa[a].begin(), mpa[a].end(), i); if (it == mpa[a].end()) que.push({INT_MAX, a}); else que.push({*it, a}); } R(K) { if (init[i]) WriteAdvice(1); else WriteAdvice(0); } R(N) { if (rem[i]) WriteAdvice(1); else WriteAdvice(0); } }
#include "assistant.h" #include <bits/stdc++.h> #define R(a) for (int i = 0; i < a; ++i) #define ii pair<int, int> using namespace std; void Assist(unsigned char *A, int N, int K, int R) { queue<int> rem; unordered_set<int> val; R(K) { val.insert(i); if (A[i]) rem.push(i); } R(N) { int a = GetRequest(); if (!val.count(a)) { PutBack(rem.front()); rem.pop(); } if (A[K + i]) { rem.push(a); } } }
#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...