Submission #1189498

#TimeUsernameProblemLanguageResultExecution timeMemory
1189498gygPainting Squares (IOI20_squares)C++20
100 / 100
591 ms472 KiB
#include "squares.h" #include <bits/stdc++.h> using namespace std; #define arr array #define vec vector const int N = 2e3 + 5; vec<int> ord; arr<bool, N> vs; void intl() { ord.clear(), vs.fill(false); } void dfs(int k, int u = 0) { vs[u] = true, ord.push_back(u); int v = (2 * u + 1) % (1 << k), w = (2 * u) % (1 << k); if (!vs[v]) dfs(k, v); else if (!vs[w]) dfs(k, w); } vec<int> slv(int n) { int k = min(10, n); intl(), dfs(k); vec<int> ans; auto on = [](int x, int i)->bool { return x & (1 << i); }; for (int i = k - 1; i >= 0; i--) ans.push_back(on(ord[0], i)); for (int i = 1; i <= n - k; i++) ans.push_back(on(ord[i], 0)); return ans; } vec<int> paint(int n) { vec<int> ans = slv(n); int k = min(10, n); ans.push_back(k); return ans; } int find_location(int n, vec<int> rq) { vec<int> sq = slv(n); int k = min(10, n); for (int i = 0; i < n; i++) { vec<int> cr; for (int j = i; j <= i + k - 1; j++) cr.push_back((j >= n) ? -1 : sq[j]); if (cr == rq) return i; } assert(false); return -1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...