#include <array>
#include <bitset>
#include <cassert>
#include <iostream>
#include <vector>
using namespace std;
#define all(a) begin(a), end(a)
using ll = long long;
constexpr int N = 5e4 + 1;
using B = bitset<N>;
void solve() {
int n, s;
cin >> n >> s;
B vals[n + 1];
for (int i = 1; i <= n; i++) {
vals[i].reset();
for (int j = i; j <= n; j += i) {
vals[i][j] = 1;
}
}
B target{};
for (int i = 0; i < s; i++) {
int x;
cin >> x;
target[x] = 1;
}
vector<array<int, 3>> result;
B cur = vals[n];
for (int i = 1; i <= n; i++) {
if (cur[i] == target[i])
continue;
int index = n + result.size();
if (target[i]) {
result.push_back({1, index, i});
cur |= vals[i];
} else {
result.push_back({3, i});
result.push_back({2, index, index + 1});
cur &= ~vals[i];
}
}
cout << result.size() << "\n";
for (auto [t, x, y] : result) {
cout << t << " " << x;
if (t != 3)
cout << " " << y;
cout << "\n";
}
}
int main() {
cin.tie(nullptr);
ios::sync_with_stdio(false);
int tests = 1;
// cin >> tests;
while (tests--)
solve();
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | #include <array> #include <bitset> #include <cassert> #include <iostream> #include <vector> using namespace std; #define all(a) begin(a), end(a) using ll = long long; constexpr int N = 5e4 + 1; using B = bitset<N>; void solve() { int n, s; cin >> n >> s; B vals[n + 1]; for (int i = 1; i <= n; i++) { vals[i].reset(); for (int j = i; j <= n; j += i) { vals[i][j] = 1; } } B target{}; for (int i = 0; i < s; i++) { int x; cin >> x; target[x] = 1; } vector<array<int, 3>> result; B cur = vals[n]; for (int i = 1; i <= n; i++) { if (cur[i] == target[i]) continue; int index = n + result.size(); if (target[i]) { result.push_back({1, index, i}); cur |= vals[i]; } else { result.push_back({3, i}); result.push_back({2, index, index + 1}); cur &= ~vals[i]; } } cout << result.size() << "\n"; for (auto [t, x, y] : result) { cout << t << " " << x; if (t != 3) cout << " " << y; cout << "\n"; } } int main() { cin.tie(nullptr); ios::sync_with_stdio(false); int tests = 1; // cin >> tests; while (tests--) solve(); } |
English