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
#ifdef _MSC_VER
  #ifndef __GNUC__
    #pragma warning(disable: 4996)
  #endif
  #define main main0
#endif
#include <iostream>
#include <vector>
using namespace std;
typedef long long           ll;
typedef unsigned long long ull;
typedef unsigned int      uint;

int main() {
  std::ios_base::sync_with_stdio(false);
  std::cin.tie(NULL);

  int n, k;
  vector<int> przychody, minOdPoczatku, maxOdKonca;

  cin >> n >> k;
  przychody.clear();
  minOdPoczatku.clear();
  maxOdKonca.clear();
  przychody.resize(n);
  minOdPoczatku.resize(n);
  maxOdKonca.resize(n);
  for(int i = 0; i < n; ++i)
    cin >> przychody[i];

  if(k == 2) {
    int pozycja = 0;
    minOdPoczatku[0] = przychody[0];
    maxOdKonca[n-1] = przychody[n-1];
    for(int i = 1, j = n - 2; i < n; ++i, --j) {
      minOdPoczatku[i] = min(minOdPoczatku[i-1], przychody[i]);
      maxOdKonca[j] = max(maxOdKonca[j+1], przychody[j]);
    }
    for(int i = 1; pozycja == 0 && i < n; ++i)
      if(minOdPoczatku[i-1] >= maxOdKonca[i])
        pozycja = i;
    if(pozycja > 0)
      cout << "TAK\n" << pozycja << endl;
    else
      cout << "NIE" << endl;
  }
  if(k == 3) {
    int pozycja = 0;
    minOdPoczatku[0] = przychody[0];
    maxOdKonca[n-1] = przychody[n-1];
    for(int i = 1, j = n - 2; i < n; ++i, --j) {
      minOdPoczatku[i] = min(minOdPoczatku[i-1], przychody[i]);
      maxOdKonca[j] = max(maxOdKonca[j+1], przychody[j]);
    }
    for(int i = 1, n1 = n - 1; pozycja == 0 && i < n1; ++i)
      if(minOdPoczatku[i] >= przychody[i] || przychody[i] >= maxOdKonca[i+1])
        pozycja = i;
    if(pozycja > 0)
      cout << "TAK\n" << pozycja << ' ' << pozycja+1 << endl;
    else
        cout << "NIE" << endl;
  }
  if(k > 3) {
    int pozycja = 0, poprzedni = przychody[0];
    for(int i = 1; pozycja == 0 && i < n; ++i)
      if(poprzedni < przychody[i])
        poprzedni = przychody[i];
      else
        pozycja = i;
    if(pozycja > 0) {
      int koniec = min(k - 1 + pozycja, n);
      int i = koniec - k + 1;
      cout << "TAK\n" << i;
      for(++i; i < koniec; ++i)
        cout <<  ' '  << i;
      cout << endl;
    } else
        cout << "NIE" << endl;
  }

  return 0;
}