#include<iostream> using namespace std; int tab[500008]; int maksy[500008]; int minki[500008]; int main(){ int n, k; cin >> n >> k; int a, popa=0; int spadek=-1; int prog=-1; if(k>=4){ for(int i=0; i<n; i++){ cin >> a; if(a<=popa){ spadek=a; } popa=a; } if(spadek==-1){ cout << "NIE"; } else{ cout << "TAK"<<"\n"; if(k>spadek){ for(int i=0; i<k; i++){ cout << i+1<<" "; } } else{ for(int i=spadek-k+1; i<=spadek; i++){ cout << i<<" "; } } } } if(k==3){ int pozmax, maks=0; int pozmin, mini=1000000008; for(int i=1; i<=n; i++){ cin >> a; if(a>maks){ pozmax=i; maks=a; } if(a<=mini){ pozmin=i; mini=a; } } if(pozmin==n){ cout<<"TAK"<<"\n"; cout << 1 <<" "<< n-1; } else{ if(pozmin!=1){ cout <<"TAK" <<"\n"; cout << pozmin-1 << " "<<pozmin; } else{ if(pozmax!=n){ cout <<"TAK" << "\n"; cout << pozmax-1 <<" " << pozmax; } else{ cout << "NIE"; } } } } if(k==2){ for(int i=0; i<n; i++){ cin >> tab[i]; minki[i]=1000000008; } for(int i=0; i<n; i++){ minki[i]=min(minki[i], tab[i]); minki[i+1]=minki[i]; } for(int i=n-1; i>=0; i--){ maksy[i]=max(maksy[i], tab[i]); if(i>0){ maksy[i-1]=maksy[i]; } } for(int i=0; i<n-1; i++){ if(minki[i]>=maksy[i+1]){ prog=i+1; } } if(prog==-1){ cout << "NIE"; } else{ cout <<"TAK"<<"\n"<< prog; } } }
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<iostream> using namespace std; int tab[500008]; int maksy[500008]; int minki[500008]; int main(){ int n, k; cin >> n >> k; int a, popa=0; int spadek=-1; int prog=-1; if(k>=4){ for(int i=0; i<n; i++){ cin >> a; if(a<=popa){ spadek=a; } popa=a; } if(spadek==-1){ cout << "NIE"; } else{ cout << "TAK"<<"\n"; if(k>spadek){ for(int i=0; i<k; i++){ cout << i+1<<" "; } } else{ for(int i=spadek-k+1; i<=spadek; i++){ cout << i<<" "; } } } } if(k==3){ int pozmax, maks=0; int pozmin, mini=1000000008; for(int i=1; i<=n; i++){ cin >> a; if(a>maks){ pozmax=i; maks=a; } if(a<=mini){ pozmin=i; mini=a; } } if(pozmin==n){ cout<<"TAK"<<"\n"; cout << 1 <<" "<< n-1; } else{ if(pozmin!=1){ cout <<"TAK" <<"\n"; cout << pozmin-1 << " "<<pozmin; } else{ if(pozmax!=n){ cout <<"TAK" << "\n"; cout << pozmax-1 <<" " << pozmax; } else{ cout << "NIE"; } } } } if(k==2){ for(int i=0; i<n; i++){ cin >> tab[i]; minki[i]=1000000008; } for(int i=0; i<n; i++){ minki[i]=min(minki[i], tab[i]); minki[i+1]=minki[i]; } for(int i=n-1; i>=0; i--){ maksy[i]=max(maksy[i], tab[i]); if(i>0){ maksy[i-1]=maksy[i]; } } for(int i=0; i<n-1; i++){ if(minki[i]>=maksy[i+1]){ prog=i+1; } } if(prog==-1){ cout << "NIE"; } else{ cout <<"TAK"<<"\n"<< prog; } } } |