#include <iostream>
using namespace std;
const int MAXN = 5e5+1;
int a[MAXN], mx[MAXN+1], mn[MAXN];
int main(){
int n, k;
cin >> n >> k;
for (int i=1; i<=n; i++) cin >> a[i];
mn[0] = 1e9+1;
for (int i=1; i<=n; i++) mn[i] = min(mn[i-1], a[i]);
for (int i=n; i>=1; i--) mx[i] = max(mx[i+1], a[i]);
if (k>n){cout << "NIE\n"; return 0;}
else if (k==2){
for (int i=1; i<=n-1; i++){
if (mn[i] >= mx[i+1]){
cout << "TAK\n";
cout << i << "\n";
return 0;
}
}
cout << "NIE\n"; return 0;
} else{
for (int i=1; i<=n-1; i++){
if (a[i] >= a[i+1]){
if (k>3){
cout << "TAK\n";
int t=2;
for (int j=1; j<i; j++){
if (k-t){cout << j << " "; t++;}
else break;
}
cout << i << " " << i+1 << " ";
for (int j=i+2; j<=n; j++){
if (k-t){cout << j << " "; t++;}
else break;
}
return 0;
} else{
if (a[i]>=mx[i+1] || mn[i-1]>=a[i+1]){
cout << "TAK\n";
if (a[i]>=mx[i+1]){
if (i==1) cout << i << " " << i+1 << "\n";
else cout << i-1 << " " << i << '\n';
} else if (mn[i]>=a[i+1]) cout << i << " " << i+1 << "\n";
return 0;
}
}
}
}
cout << "NIE\n";
return 0;
}
cout << "NIE\n";
}
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 | #include <iostream> using namespace std; const int MAXN = 5e5+1; int a[MAXN], mx[MAXN+1], mn[MAXN]; int main(){ int n, k; cin >> n >> k; for (int i=1; i<=n; i++) cin >> a[i]; mn[0] = 1e9+1; for (int i=1; i<=n; i++) mn[i] = min(mn[i-1], a[i]); for (int i=n; i>=1; i--) mx[i] = max(mx[i+1], a[i]); if (k>n){cout << "NIE\n"; return 0;} else if (k==2){ for (int i=1; i<=n-1; i++){ if (mn[i] >= mx[i+1]){ cout << "TAK\n"; cout << i << "\n"; return 0; } } cout << "NIE\n"; return 0; } else{ for (int i=1; i<=n-1; i++){ if (a[i] >= a[i+1]){ if (k>3){ cout << "TAK\n"; int t=2; for (int j=1; j<i; j++){ if (k-t){cout << j << " "; t++;} else break; } cout << i << " " << i+1 << " "; for (int j=i+2; j<=n; j++){ if (k-t){cout << j << " "; t++;} else break; } return 0; } else{ if (a[i]>=mx[i+1] || mn[i-1]>=a[i+1]){ cout << "TAK\n"; if (a[i]>=mx[i+1]){ if (i==1) cout << i << " " << i+1 << "\n"; else cout << i-1 << " " << i << '\n'; } else if (mn[i]>=a[i+1]) cout << i << " " << i+1 << "\n"; return 0; } } } } cout << "NIE\n"; return 0; } cout << "NIE\n"; } |
English