#include <bits/stdc++.h> using namespace std; int n, k; void handle_2(vector<int> &v) { vector<int> suf_max(n); suf_max.back() = v.back(); for (int i = n-2; i >= 0; --i) suf_max[i] = max(suf_max[i+1], v[i]); int pref_min = v[0]; for (int i = 0; i < n-1; ++i) { pref_min = min(pref_min, v[i]); if (pref_min >= suf_max[i+1]) { cout << "TAK\n" << i+1 << '\n'; return; } } cout << "NIE\n"; } void handle_3(vector<int> &v) { for (int i = 1; i < n-1; ++i) if (v[i] <= v[0]) { cout << "TAK\n" << i << ' ' << i+1 << '\n'; return; } for (int i = n-2; i > 0; --i) if (v[i] >= v[n-1]) { cout << "TAK\n" << i << ' ' << i+1 << '\n'; return; } if (v[0] >= v[n-1]) { cout << "TAK\n" << 1 << ' ' << n-1 << '\n'; return; } cout << "NIE\n"; } int not_unique_sorted(vector<int> &v) { for (int i = 1; i < n; ++i) if (v[i] <= v[i-1]) return i == 1 ? 2 : (i == n-1 ? n-2 : i); return 0; } void handle_geq_4(vector<int> &v) { int idx = not_unique_sorted(v); if (!idx) { cout << "NIE\n"; return; } k -= 4; cout << "TAK\n"; for (int i = 1; i < idx-1 && k > 0; ++i, --k) cout << i << ' '; cout << idx-1 << ' ' << idx << ' ' << idx+1; for (int i = idx+2; i < n && k > 0; ++i, --k) cout << ' ' << i; cout << '\n'; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> k; vector<int> v(n); for (int &i : v) cin >> i; if (k == 2) handle_2(v); else if (k == 3) handle_3(v); else handle_geq_4(v); }
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 70 71 72 73 74 75 76 77 78 79 80 81 | #include <bits/stdc++.h> using namespace std; int n, k; void handle_2(vector<int> &v) { vector<int> suf_max(n); suf_max.back() = v.back(); for (int i = n-2; i >= 0; --i) suf_max[i] = max(suf_max[i+1], v[i]); int pref_min = v[0]; for (int i = 0; i < n-1; ++i) { pref_min = min(pref_min, v[i]); if (pref_min >= suf_max[i+1]) { cout << "TAK\n" << i+1 << '\n'; return; } } cout << "NIE\n"; } void handle_3(vector<int> &v) { for (int i = 1; i < n-1; ++i) if (v[i] <= v[0]) { cout << "TAK\n" << i << ' ' << i+1 << '\n'; return; } for (int i = n-2; i > 0; --i) if (v[i] >= v[n-1]) { cout << "TAK\n" << i << ' ' << i+1 << '\n'; return; } if (v[0] >= v[n-1]) { cout << "TAK\n" << 1 << ' ' << n-1 << '\n'; return; } cout << "NIE\n"; } int not_unique_sorted(vector<int> &v) { for (int i = 1; i < n; ++i) if (v[i] <= v[i-1]) return i == 1 ? 2 : (i == n-1 ? n-2 : i); return 0; } void handle_geq_4(vector<int> &v) { int idx = not_unique_sorted(v); if (!idx) { cout << "NIE\n"; return; } k -= 4; cout << "TAK\n"; for (int i = 1; i < idx-1 && k > 0; ++i, --k) cout << i << ' '; cout << idx-1 << ' ' << idx << ' ' << idx+1; for (int i = idx+2; i < n && k > 0; ++i, --k) cout << ' ' << i; cout << '\n'; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> k; vector<int> v(n); for (int &i : v) cin >> i; if (k == 2) handle_2(v); else if (k == 3) handle_3(v); else handle_geq_4(v); } |