# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
874246 | 2023-11-16T14:26:46 Z | LucaLucaM | Super Dango Maker (JOI22_dango3) | C++17 | 1166 ms | 1108 KB |
#include "dango3.h" #ifdef LOCAL #include "grader.cpp" #endif // LOCAL #include <vector> #include <random> #include <algorithm> #include <functional> #include <cassert> #include <iostream> std::mt19937 rng(3192702); void Solve(int n, int m) { /** sol in O(n * m^2) query uri: pornesc cu toate valorile ramase si de fiecare data incerc sa scot cate 1 **/ std::vector<int> id(n * m + 1); for (int i = 1; i <= n * m; i++) { id[i] = i; } shuffle(id.begin() + 1, id.end(), rng); auto query = [&] (std::vector<int> v) { std::vector<int> w; for (const auto &x : v) { w.push_back(id[x]); } return Query(w); }; auto answer = [&] (std::vector<int> v) { std::vector<int> w; for (const auto &x : v) { w.push_back(id[x]); } Answer(w); }; std::function<std::vector<int>(std::vector<int>)> exclude = [&] (std::vector<int> v) { bool dont[n * m + 1] = {}; for (const auto &x : v) { dont[x] = true; } std::vector<int> w; for (int i = 1; i <= n * m; i++) { if (!dont[i]) { w.push_back(i); } } return w; }; bool taken[n * m + 1] = {}; int SZ = 50'000 / m; for (int rep = 0; rep < m; rep++) { std::vector<int> cand; for (int i = 1; i <= n * m; i++) { if (!taken[i]) { cand.push_back(i); } } shuffle(cand.begin(), cand.end(), rng); if (cand.size() > SZ) { cand.resize(SZ); } std::vector<int> ret; ret.push_back(cand[0]); for (int i = 1; i < (int) cand.size() && (int) ret.size() < n; i++) { std::vector<int> nw = ret; nw.push_back(cand[i]); if (query(exclude(ret)) == query(exclude(nw))) { ret.push_back(cand[i]); } } // std::cout << "! " << (int) ret.size() << '\n'; answer(ret); for (const auto &x : ret) { taken[x] = true; } } } /** 3 2 3 3 1 2 1 2 4 4 2 2 3 2 4 4 3 2 3 1 1 3 4 1 4 1 **/
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 348 KB | Output is correct |
2 | Correct | 1 ms | 348 KB | Output is correct |
3 | Correct | 1 ms | 348 KB | Output is correct |
4 | Correct | 1 ms | 348 KB | Output is correct |
5 | Correct | 0 ms | 348 KB | Output is correct |
6 | Correct | 0 ms | 348 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 33 ms | 348 KB | Output is correct |
2 | Correct | 34 ms | 348 KB | Output is correct |
3 | Correct | 35 ms | 348 KB | Output is correct |
4 | Correct | 36 ms | 348 KB | Output is correct |
5 | Correct | 31 ms | 348 KB | Output is correct |
6 | Correct | 32 ms | 344 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1108 ms | 852 KB | Output is correct |
2 | Correct | 1136 ms | 740 KB | Output is correct |
3 | Correct | 1067 ms | 848 KB | Output is correct |
4 | Correct | 1094 ms | 732 KB | Output is correct |
5 | Correct | 1135 ms | 1108 KB | Output is correct |
6 | Correct | 1166 ms | 736 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 474 ms | 1016 KB | Wrong Answer [4] |
2 | Halted | 0 ms | 0 KB | - |