#include <bits/stdc++.h> using namespace std; typedef long long ll; int n, k, x, m; int t[500001]; int sufmax[500001]; void solv(int k){ m=0; x=k-1; for (int i=1;i<n;i++) { if (t[i]>=t[i+1] && m==0) { m=i; break; } } //cout <<m; if (m==0) {cout << "NIE"<<'\n'; return;} cout << "TAK"<<'\n'; for (int i=1;i<=n;i++) { if ((i<m-1 || i>m+1) && x-2>0) {cout << i << " "; x--;} if (i==m-1) {cout << i<<" "<<i+1<<" "<<i+2<<" ";} } } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> k; for (int i=1;i<=n;i++) { cin >> t[i]; } if (k>3) solv(k); if (k==3) { sufmax[n+1]=-1; for (int i=n;i>=1;i--) { sufmax[i]=max(sufmax[i+1], t[i]); } m=t[1]; if (sufmax[2]<=t[1]) {cout <<"TAK"<<'\n'<<1<<" "<<2; m=0;} else { for (int i=2;i<n;i++) { if (t[i]>=sufmax[i+1] || t[i]<=m) {cout << "TAK"<<'\n'<<i-1<<" "<<i; m=0;break;} m=min(m, t[i]); } } if (m) cout << "NIE"; } if (k==2) { sufmax[n+1]=-1; for (int i=n;i>=1;i--) { sufmax[i]=max(sufmax[i+1], t[i]); } m=(1<<20); for (int i=1;i<n;i++) { m=min(m, t[i]); if (m>=sufmax[i+1]) {cout << "TAK"<<'\n'<<i; m=0;break;} } if (m) cout << "NIE"; } }
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 | #include <bits/stdc++.h> using namespace std; typedef long long ll; int n, k, x, m; int t[500001]; int sufmax[500001]; void solv(int k){ m=0; x=k-1; for (int i=1;i<n;i++) { if (t[i]>=t[i+1] && m==0) { m=i; break; } } //cout <<m; if (m==0) {cout << "NIE"<<'\n'; return;} cout << "TAK"<<'\n'; for (int i=1;i<=n;i++) { if ((i<m-1 || i>m+1) && x-2>0) {cout << i << " "; x--;} if (i==m-1) {cout << i<<" "<<i+1<<" "<<i+2<<" ";} } } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> k; for (int i=1;i<=n;i++) { cin >> t[i]; } if (k>3) solv(k); if (k==3) { sufmax[n+1]=-1; for (int i=n;i>=1;i--) { sufmax[i]=max(sufmax[i+1], t[i]); } m=t[1]; if (sufmax[2]<=t[1]) {cout <<"TAK"<<'\n'<<1<<" "<<2; m=0;} else { for (int i=2;i<n;i++) { if (t[i]>=sufmax[i+1] || t[i]<=m) {cout << "TAK"<<'\n'<<i-1<<" "<<i; m=0;break;} m=min(m, t[i]); } } if (m) cout << "NIE"; } if (k==2) { sufmax[n+1]=-1; for (int i=n;i>=1;i--) { sufmax[i]=max(sufmax[i+1], t[i]); } m=(1<<20); for (int i=1;i<n;i++) { m=min(m, t[i]); if (m>=sufmax[i+1]) {cout << "TAK"<<'\n'<<i; m=0;break;} } if (m) cout << "NIE"; } } |