#include <bits/stdc++.h>
using namespace std;
int n, x, y, a, d, s, p, w, b, c;
int tab[500010];
int kon[500010];
int duz[500010];
int mal[500010];
int main(){
cin >> n >> p;
for(int i=0; i<n ; i++){
cin >> tab[i];
}
p--;
kon[n-1]=1;
a=0;
w=0;
if (p>=2){
while (p>0&&w==0){
d=tab[a];
for(int i=a+1; i<n; i++){
if (w==0){
if (tab[i]<=d){
kon[i]=1;
kon[i-1]=1;
//cout << "add " << i+1 << " " << i << endl;
p=-2;
w=1;
s=1;
}
}
d=min(d, tab[i]);
}
if (w==0){
if (a==0){
kon[a]=1;
p--;
}
else{
if (kon[a-1]==1){
kon[a-1]=0;
kon[a]=1;
}
}
}
else{
while (p>0){
if (kon[x]!=1){
kon[x]=1;
p--;
}
x++;
}
}
a++;
if (a==n&&w==0){
y=1;
cout << "NIE";
p=0;
}
}
if (y!=1){
cout << "TAK" << '\n';
for (int i=0; i<n-1; i++){
if (kon[i]==1){
cout << i+1 << " ";
}
}
}
}
else{
if (tab[0]<tab[n-1]){
cout << "NIE";
y=1;
}
else{
y=0;
b=0;
c=tab[n-1];
for (int i=0; i<n; i++){
if (tab[i]>b){
b=tab[i];
}
duz[i]=b;
}
for (int i=n-1; i>=0; i--){
if (tab[i]<c){
c=tab[i];
}
mal[i]=c;
}
for (int i=0; i<n; i++){
if (duz[i]<mal[i+1]&&y!=1){
cout << "TAK" << endl;
cout << i+1;
y=1;
}
}
if (y==0){
cout << "NIE";
}
}
}
}
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 98 99 100 101 102 103 104 105 106 107 108 109 | #include <bits/stdc++.h> using namespace std; int n, x, y, a, d, s, p, w, b, c; int tab[500010]; int kon[500010]; int duz[500010]; int mal[500010]; int main(){ cin >> n >> p; for(int i=0; i<n ; i++){ cin >> tab[i]; } p--; kon[n-1]=1; a=0; w=0; if (p>=2){ while (p>0&&w==0){ d=tab[a]; for(int i=a+1; i<n; i++){ if (w==0){ if (tab[i]<=d){ kon[i]=1; kon[i-1]=1; //cout << "add " << i+1 << " " << i << endl; p=-2; w=1; s=1; } } d=min(d, tab[i]); } if (w==0){ if (a==0){ kon[a]=1; p--; } else{ if (kon[a-1]==1){ kon[a-1]=0; kon[a]=1; } } } else{ while (p>0){ if (kon[x]!=1){ kon[x]=1; p--; } x++; } } a++; if (a==n&&w==0){ y=1; cout << "NIE"; p=0; } } if (y!=1){ cout << "TAK" << '\n'; for (int i=0; i<n-1; i++){ if (kon[i]==1){ cout << i+1 << " "; } } } } else{ if (tab[0]<tab[n-1]){ cout << "NIE"; y=1; } else{ y=0; b=0; c=tab[n-1]; for (int i=0; i<n; i++){ if (tab[i]>b){ b=tab[i]; } duz[i]=b; } for (int i=n-1; i>=0; i--){ if (tab[i]<c){ c=tab[i]; } mal[i]=c; } for (int i=0; i<n; i++){ if (duz[i]<mal[i+1]&&y!=1){ cout << "TAK" << endl; cout << i+1; y=1; } } if (y==0){ cout << "NIE"; } } } } |
English