#include<iostream>
using namespace std;
const int N=500005;
//int base=1;
int t[N];
int t2[N];
//int t3[N];
int main(){
int n,k;
cin>>n>>k;
// while(base<n) base*=2;
for(int i=0;i<n;i++){
cin>>t[i];
}
int pom=t[0];
if(k==2){
// bool ok=false;
t2[n-1]=t[n-1];
for(int i=n-2;i>=0;i--){
t2[i]=max(t2[i+1],t[i]);
}
for(int i=0;i<n-1;i++){
pom=min(pom,t[i]);
if(pom>=t2[i+1]){
cout<<"TAK\n"<<i+1<<"\n";
return 0;
}
}
cout<<"NIE\n"; return 0;
}
else{
if(k==3){
t2[n-1]=t[n-1];
for(int i=n-2;i>=0;i--){
t2[i]=max(t2[i+1],t[i]);
}
if(t2[0]==t[0]){
cout<<"TAK\n"<<1<<" "<<2<<"\n";return 0;
}
else{
for(int i=1;i<n-1;i++){
if(t[i]<=t[0]){
cout<<"TAK\n"<<i<<" "<<i+1<<"\n";return 0;
}
if(t[i]>=t2[i+1]){
cout<<"TAK\n"<<i<<" "<<i+1<<"\n"; return 0;
}
}
}
cout<<"NIE\n"; return 0;
}
else{
int a=-1,b=-1;
for(int i=0;i<n-1;i++){
if(t[i]>=t[i+1]){
a=i; b=i+1;
break;
}
}
if(a==-1){
cout<<"NIE\n"; return 0;
}
else{
cout<<"TAK\n";
int ile=n-4;
int wsk=1;
while(ile>0 && wsk<=a){
cout<<wsk<<" "; ile--; wsk++;
}
cout<<a+1<<" "<<b+1<<" ";
wsk=b+2;
while(ile>0 ){
cout<<wsk<<" "; ile--; wsk++;
}
cout<<"\n"; return 0;
}
}
}
// cout<<"\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 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 | #include<iostream> using namespace std; const int N=500005; //int base=1; int t[N]; int t2[N]; //int t3[N]; int main(){ int n,k; cin>>n>>k; // while(base<n) base*=2; for(int i=0;i<n;i++){ cin>>t[i]; } int pom=t[0]; if(k==2){ // bool ok=false; t2[n-1]=t[n-1]; for(int i=n-2;i>=0;i--){ t2[i]=max(t2[i+1],t[i]); } for(int i=0;i<n-1;i++){ pom=min(pom,t[i]); if(pom>=t2[i+1]){ cout<<"TAK\n"<<i+1<<"\n"; return 0; } } cout<<"NIE\n"; return 0; } else{ if(k==3){ t2[n-1]=t[n-1]; for(int i=n-2;i>=0;i--){ t2[i]=max(t2[i+1],t[i]); } if(t2[0]==t[0]){ cout<<"TAK\n"<<1<<" "<<2<<"\n";return 0; } else{ for(int i=1;i<n-1;i++){ if(t[i]<=t[0]){ cout<<"TAK\n"<<i<<" "<<i+1<<"\n";return 0; } if(t[i]>=t2[i+1]){ cout<<"TAK\n"<<i<<" "<<i+1<<"\n"; return 0; } } } cout<<"NIE\n"; return 0; } else{ int a=-1,b=-1; for(int i=0;i<n-1;i++){ if(t[i]>=t[i+1]){ a=i; b=i+1; break; } } if(a==-1){ cout<<"NIE\n"; return 0; } else{ cout<<"TAK\n"; int ile=n-4; int wsk=1; while(ile>0 && wsk<=a){ cout<<wsk<<" "; ile--; wsk++; } cout<<a+1<<" "<<b+1<<" "; wsk=b+2; while(ile>0 ){ cout<<wsk<<" "; ile--; wsk++; } cout<<"\n"; return 0; } } } // cout<<"\n"; } |
English