Submission #1229449

#TimeUsernameProblemLanguageResultExecution timeMemory
1229449chaeryeongLast supper (IOI12_supper)C++20
0 / 100
185 ms12004 KiB
#include "advisor.h" #include <bits/stdc++.h> using namespace std; void ComputeAdvice (int *c, int n, int k, int m) { vector <int> occ[n]; for (int i = 0; i < n; i++) { occ[c[i]].push_back(i); } for (int i = 0; i < n; i++) { occ[i].push_back(n); } set <pair <int, int>> ii; set <int> jj; vector <int> pp(n, 0); for (int i = 0; i < k; i++) { pp[i] = i; ii.insert({occ[i][0], i}); jj.insert(i); } vector <int> e(n, 0); for (int i = 0; i < n; i++) { if (jj.count(c[i])) { e[i] = -1; continue; } auto x = *(--ii.end()); ii.erase(x); jj.erase(x.second); e[i] = pp[x.second]; pp[c[i]] = pp[x.second]; pp[x.second] = 0; auto g = *lower_bound(occ[c[i]].begin(), occ[c[i]].end(), i + 1); ii.insert({g, c[i]}); jj.insert(c[i]); } for (int i = 0; i < n; i++) { WriteAdvice(e[i] == -1); } int f = __lg(k) + 1; for (int j = 0; j < n; j++) { if (e[j] == -1) { continue; } for (int k = 0; k < f; k++) { WriteAdvice((e[j] >> k) & 1); } } }
#include "assistant.h" #include <bits/stdc++.h> using namespace std; void Assist (unsigned char *a, int n, int k, int r) { vector <int> useless(n, 0); for (int i = 0; i < n; i++) { useless[i] = a[i]; } int f = __lg(k) + 1; vector <int> cur(k, 0); int bit = n; iota(cur.begin(), cur.end(), 0); for (int i = 0; i < n; i++) { int x = GetRequest(); if (!useless[i]) { int idx = 0; for (int j = 0; j < f; j++) { if (a[bit++] == 1) { idx |= 1 << j; } } PutBack(cur[idx]); cur[idx] = x; } } }
#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...