Submission #931707

#TimeUsernameProblemLanguageResultExecution timeMemory
931707boris_mihovChameleon's Love (JOI20_chameleon)C++17
40 / 100
15 ms472 KiB
#include "chameleon.h" #include <algorithm> #include <iostream> #include <numeric> #include <cassert> #include <vector> const int MAXN = 500 + 10; int perm[MAXN]; bool found[2 * MAXN]; std::vector <int> candidates[MAXN]; void Solve(int n) { 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) { // std::cout << "here: " << i << ' ' << j << '\n'; candidates[i].push_back(j); } } if (candidates[i].size() == 3) { if (Query({candidates[i][0], candidates[i][2], i}) == 1) { std::swap(candidates[i].back(), candidates[i][1]); } else if (Query({candidates[i][1], candidates[i][2], i}) == 1) { std::swap(candidates[i].back(), candidates[i][0]); } candidates[i].pop_back(); } // std::cout << "size: " << i << ' ' << candidates[i].size() << '\n'; // for (const int &j : candidates[i]) std::cout << j << ' '; std::cout << '\n'; } std::iota(perm + 1, perm + 1 + 2 * n, 1); std::sort(perm + 1, perm + 1 + 2 * n, [&](int x, int y) { return candidates[x].size() < candidates[y].size(); }); for (int idx = 1 ; idx <= 2 * n ; ++idx) { int i = perm[idx]; if (found[i]) { continue; } if (candidates[i].size() == 1) { Answer(i, candidates[i][0]); found[candidates[i][0]] = true; // std::cout << "answer: " << i << ' ' << candidates[i][0] << '\n'; continue; } assert(candidates[i].size() == 2); bool shouldBreak = false; for (const int &j : candidates[i]) { for (const int &x : candidates[j]) { if (x == i) { // std::cout << "answer: " << i << ' ' << j << '\n'; Answer(i, j); found[j] = true; shouldBreak = true; break; } } if (shouldBreak) { break; } } } }
#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...