#include <bits/stdc++.h> #include <stdio.h> using namespace std; int n,k, ind_max; int odp = 0; int t[500007]; int maksy[500007], miny[500007]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>k; cin>>t[1]; int maks = t[1]; maksy[1] = t[1]; ind_max = 1; for(int i=2;i<=n;++i){ cin>>t[i]; if(k>3 && odp==0){ if(t[i]<=maks){ odp = i; } else{ maks = t[i]; ind_max = i; } } else if(k==2 || k==3){ maksy[i] = min(maksy[i-1], t[i]); } } miny[n] = t[n]; for(int i=n-1;i>0;--i){ miny[i] = max(miny[i+1], t[i]); } if(k==2){ for(int i=1;i<n;i++){ if(maksy[i]>=miny[i+1]){ cout<<"TAK\n"; cout<<i; return 0; } } } if(k==3){ for(int i=1;i<n-1;i++){ if(maksy[i]>=t[i+1] || maksy[i] >= miny[i+2] || t[i+1]>=miny[i+2]){ cout<<"TAK\n"; cout<<i<<" "<<i+1; return 0; } } } if(odp>0){ cout<<"TAK\n"; int z=1; int y = k-4; if(ind_max == 1){ ++y; } while(z<=y){ if(z==ind_max-1 || z == ind_max || z == odp){ ++y; } cout<<z<<" "; z++; } if(y==k-4){ cout<<ind_max-1<<" "<<ind_max<<" "<<odp; } } else{ cout<<"NIE"; } 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> #include <stdio.h> using namespace std; int n,k, ind_max; int odp = 0; int t[500007]; int maksy[500007], miny[500007]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>k; cin>>t[1]; int maks = t[1]; maksy[1] = t[1]; ind_max = 1; for(int i=2;i<=n;++i){ cin>>t[i]; if(k>3 && odp==0){ if(t[i]<=maks){ odp = i; } else{ maks = t[i]; ind_max = i; } } else if(k==2 || k==3){ maksy[i] = min(maksy[i-1], t[i]); } } miny[n] = t[n]; for(int i=n-1;i>0;--i){ miny[i] = max(miny[i+1], t[i]); } if(k==2){ for(int i=1;i<n;i++){ if(maksy[i]>=miny[i+1]){ cout<<"TAK\n"; cout<<i; return 0; } } } if(k==3){ for(int i=1;i<n-1;i++){ if(maksy[i]>=t[i+1] || maksy[i] >= miny[i+2] || t[i+1]>=miny[i+2]){ cout<<"TAK\n"; cout<<i<<" "<<i+1; return 0; } } } if(odp>0){ cout<<"TAK\n"; int z=1; int y = k-4; if(ind_max == 1){ ++y; } while(z<=y){ if(z==ind_max-1 || z == ind_max || z == odp){ ++y; } cout<<z<<" "; z++; } if(y==k-4){ cout<<ind_max-1<<" "<<ind_max<<" "<<odp; } } else{ cout<<"NIE"; } return 0; } |