#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"; } |