Submission #1277609

#TimeUsernameProblemLanguageResultExecution timeMemory
1277609avighnaChameleon's Love (JOI20_chameleon)C++20
40 / 100
17 ms472 KiB
#include <bits/stdc++.h> int Query(const std::vector<int> &p); void Answer(int a, int b); void Solve(int N) { std::vector<std::vector<int>> adj(2 * N + 1), ans(2 * N + 1); for (int i = 1; i <= 2 * N; ++i) { for (int j = 1; j <= 2 * N; ++j) { if (i == j) { continue; } if (Query({i, j}) == 1) { adj[i].push_back(j); ans[i].push_back(j); } } } auto remove = [&](int u, int v) { auto it1 = std::find(ans[u].begin(), ans[u].end(), v); auto it2 = std::find(ans[v].begin(), ans[v].end(), u); if (it1 != ans[u].end()) { ans[u].erase(it1); } if (it2 != ans[v].end()) { ans[v].erase(it2); } }; for (int u = 1; u <= 2 * N; ++u) { if (adj[u].size() == 1) { continue; } int a = adj[u][0], b = adj[u][1], c = adj[u][2]; if (Query({u, a, b}) == 1) { remove(u, c); } else if (Query({u, a, c}) == 1) { remove(u, b); } else { remove(u, a); } } for (int i = 1; i <= 2 * N; ++i) { if (i < ans[i][0]) { Answer(i, ans[i][0]); } } }
#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...