#include<bits/stdc++.h>
using namespace std;
int main(){
int n,k,i,minnp,j;
pair <int,int> nm,nw;
scanf("%d%d",&n,&k);
int arr[n];
int maxnp[n];
for(i=0;i<n;i++)
scanf("%d",&arr[i]);
if(k==2){
maxnp[n-1]=arr[n-1];
for(i=n-2;i>=0;i--)
maxnp[i]=max(maxnp[i+1],arr[i]);
minnp=arr[0];
for(i=0;i+1<n;i++){
minnp=min(minnp,arr[i]);
if(minnp>=maxnp[i+1]){
printf("TAK\n%d\n",i+1);
return 0;
}
}
}
else if(k==3){
nm={arr[1],1};
for(i=1;i<n;i++)
nm=min(nm,{arr[i],i});
nw={arr[n-2],n-2};
for(i=0;i<n-1;i++)
nw=max(nw,{arr[i],i});
if(nm.first<=arr[0]){
printf("TAK\n");
if(nm.second==n-1)
printf("%d %d\n",nm.second-1,nm.second);
else
printf("%d %d\n",nm.second,nm.second+1);
return 0;
}
if(nw.first>=arr[n-1]){
printf("TAK\n");
if(nw.second==n-1)
printf("%d %d\n",nw.second-1,nw.second);
else
printf("%d %d\n",nw.second,nw.second+1);
return 0;
}
}
else{
for(i=0;i+1<n;i++)
if(arr[i]>=arr[i+1]){
printf("TAK\n");
k--;
if(i+1==n-1)
k++;
j=max(i-(k-2),0);
while(k>2 && j<=i-1){
printf("%d ",j+1);
k--;
j++;
}
printf("%d ",i+1);
if(i+1<n-1)
printf("%d ",i+2);
k-=2;
j=i+2;
while(k){
printf("%d ",j+1);
k--;
j++;
}
printf("\n");
return 0;
}
}
printf("NIE\n");
return 0;
}
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 | #include<bits/stdc++.h> using namespace std; int main(){ int n,k,i,minnp,j; pair <int,int> nm,nw; scanf("%d%d",&n,&k); int arr[n]; int maxnp[n]; for(i=0;i<n;i++) scanf("%d",&arr[i]); if(k==2){ maxnp[n-1]=arr[n-1]; for(i=n-2;i>=0;i--) maxnp[i]=max(maxnp[i+1],arr[i]); minnp=arr[0]; for(i=0;i+1<n;i++){ minnp=min(minnp,arr[i]); if(minnp>=maxnp[i+1]){ printf("TAK\n%d\n",i+1); return 0; } } } else if(k==3){ nm={arr[1],1}; for(i=1;i<n;i++) nm=min(nm,{arr[i],i}); nw={arr[n-2],n-2}; for(i=0;i<n-1;i++) nw=max(nw,{arr[i],i}); if(nm.first<=arr[0]){ printf("TAK\n"); if(nm.second==n-1) printf("%d %d\n",nm.second-1,nm.second); else printf("%d %d\n",nm.second,nm.second+1); return 0; } if(nw.first>=arr[n-1]){ printf("TAK\n"); if(nw.second==n-1) printf("%d %d\n",nw.second-1,nw.second); else printf("%d %d\n",nw.second,nw.second+1); return 0; } } else{ for(i=0;i+1<n;i++) if(arr[i]>=arr[i+1]){ printf("TAK\n"); k--; if(i+1==n-1) k++; j=max(i-(k-2),0); while(k>2 && j<=i-1){ printf("%d ",j+1); k--; j++; } printf("%d ",i+1); if(i+1<n-1) printf("%d ",i+2); k-=2; j=i+2; while(k){ printf("%d ",j+1); k--; j++; } printf("\n"); return 0; } } printf("NIE\n"); return 0; } |
English