#include <bits/stdc++.h> using namespace std; int main() { int n, k; cin >> n >> k; vector<int> income(n); for(int i = 0; i < n; i++) cin >> income[i]; if(k == 2) { vector<int> pref(n), suff(n); // min, max pref[0] = income[0]; suff[n - 1] = income[n - 1]; for(int i = 1; i < n; i++) { if(pref[i - 1] > income[i]) pref[i] = income[i]; else pref[i] = pref[i - 1]; if(suff[n - i] < income[n - i - 1]) suff[n - i - 1] = income[n - i - 1]; else suff[n - i - 1] = suff[n - i]; } for(int i = 0; i < n - 1; i++) { if(pref[i] >= suff[i + 1]) { cout << "TAK\n" << i + 1 << '\n'; return 0; } } cout << "NIE\n"; } else if(k == 3) { int i = 1, maxi = income[0]; for(; i < n - 2; i++) { if(income[0] >= income[i]) { cout << "TAK\n" << i << ' ' << i + 1 << '\n'; return 0; } } for(i = n - 2; i >= 2; i--) { if(income[i] <= income[n - 1]) { cout << "TAK\n" << i << ' ' << i + 1 << '\n'; return 0; } } } else if(k >= 4) { for(int i = 1; i < n; i++) { if(income[i - 1] >= income[i]) { if(i == n - 1) { for(int j = 1; j <= k - 3; j++) cout << j << ' '; cout << i - 1 << ' ' << i << '\n'; } else if(i == 1) { cout << "1 2 "; for(int j = 3; j < k; j++) cout << j << ' '; cout << '\n'; } else { if(k - 3 < i - 1) { for(int j = 1; j < k - 3; j++) cout << j << ' '; cout << i - 1 << ' ' << i << ' ' << i + 1 << '\n'; } else { for(int j = 1; j < i - 1 && j < k - 3; j++) cout << j << ' '; cout << i - 1 << ' ' << i << ' ' << i + 1 << ' '; for(int j = 1; j < k - 3; j++) cout << j << ' '; } } } } } return 0; }
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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | #include <bits/stdc++.h> using namespace std; int main() { int n, k; cin >> n >> k; vector<int> income(n); for(int i = 0; i < n; i++) cin >> income[i]; if(k == 2) { vector<int> pref(n), suff(n); // min, max pref[0] = income[0]; suff[n - 1] = income[n - 1]; for(int i = 1; i < n; i++) { if(pref[i - 1] > income[i]) pref[i] = income[i]; else pref[i] = pref[i - 1]; if(suff[n - i] < income[n - i - 1]) suff[n - i - 1] = income[n - i - 1]; else suff[n - i - 1] = suff[n - i]; } for(int i = 0; i < n - 1; i++) { if(pref[i] >= suff[i + 1]) { cout << "TAK\n" << i + 1 << '\n'; return 0; } } cout << "NIE\n"; } else if(k == 3) { int i = 1, maxi = income[0]; for(; i < n - 2; i++) { if(income[0] >= income[i]) { cout << "TAK\n" << i << ' ' << i + 1 << '\n'; return 0; } } for(i = n - 2; i >= 2; i--) { if(income[i] <= income[n - 1]) { cout << "TAK\n" << i << ' ' << i + 1 << '\n'; return 0; } } } else if(k >= 4) { for(int i = 1; i < n; i++) { if(income[i - 1] >= income[i]) { if(i == n - 1) { for(int j = 1; j <= k - 3; j++) cout << j << ' '; cout << i - 1 << ' ' << i << '\n'; } else if(i == 1) { cout << "1 2 "; for(int j = 3; j < k; j++) cout << j << ' '; cout << '\n'; } else { if(k - 3 < i - 1) { for(int j = 1; j < k - 3; j++) cout << j << ' '; cout << i - 1 << ' ' << i << ' ' << i + 1 << '\n'; } else { for(int j = 1; j < i - 1 && j < k - 3; j++) cout << j << ' '; cout << i - 1 << ' ' << i << ' ' << i + 1 << ' '; for(int j = 1; j < k - 3; j++) cout << j << ' '; } } } } } return 0; } |