# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
643342 | Matteo_Verz | Present (RMI21_present) | C++17 | 797 ms | 86236 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#ifdef BLAT
#include "debug/debug.hpp"
#else
#define debug(x...)
#endif
using namespace std;
void generateNextSet(vector <int> &set) {
int lastdeleted = 0;
while (true) {
if (set.empty() || set.back() > lastdeleted + 1) {
set.push_back(lastdeleted + 1);
break;
}
lastdeleted = set.back();
set.pop_back();
}
long long gcd = 0;
for (int i = 0; i < set.size(); i++)
for (int j = i + 1; j < set.size(); j++)
gcd |= (1 << (__gcd(set[i], set[j])));
for (int i = set.back() - 1; i >= 1; i--)
if (gcd & (1 << i))
set.push_back(i);
}
void printSet(vector <int> &set, int setidx) {
reverse(set.begin(), set.end());
// cout << "S" << setidx << " = {";
cout << set.size() << ' ';
for (int i = 0; i < set.size(); i++)
cout << set[i] << ' ';
cout << '\n';
reverse(set.begin(), set.end());
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
vector <vector <int>> sets = {{0}};
vector <int> set = {1};
for (int i = 1; i <= 1000000; i++) {
sets.push_back(set);
generateNextSet(set);
}
int t;
cin >> t;
while (t--) {
int k;
cin >> k;
if (k == 0) cout << 0 << '\n';
else printSet(sets[k], k);
}
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |