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
#include <algorithm>
#include <cstdio>
#include <vector>

int main() {
	int dni;
	int przedzialow;
	int nierosnacy = -1;
	std::vector<int> przychody;
	std::vector<int> najmniejsze;
	std::vector<int> najwieksze;

	scanf("%d %d", &dni, &przedzialow);
	przychody.reserve(dni);

	for (int i=0; i<dni; ++i) {
		int przychod;
		scanf("%d", &przychod);
		przychody.push_back(przychod);
		if (0 < i && przychod <= przychody[i-1]) {
			nierosnacy = i;
		}
	}
	if (nierosnacy == -1) {
		puts("NIE");
		return 0;
	}
	if (4 <= przedzialow) {
		puts("TAK");
		int koniec_pierwszego = std::min(std::max(0, nierosnacy-2), dni-przedzialow);
		for (int i = koniec_pierwszego; i < koniec_pierwszego+przedzialow-1; ++i) {
			fprintf(stdout, "%d ", i+1);
		}
		return 0;
	}
	if (przedzialow == 3 && przychody[1] <= przychody[0]) {
		puts("TAK");
		fputs("1 2", stdout);
		return 0;
	}
	if (przedzialow == 3 && przychody[dni-1] <= przychody[dni-2]) {
		puts("TAK");
		fprintf(stdout, "%d %d\n", dni-2, dni-1);
		return 0;
	}

	najmniejsze.reserve(dni);
	najmniejsze.push_back(przychody[0]);
	for (int i=1; i<dni; ++i) {
		najmniejsze.push_back(std::min(najmniejsze[i-1], przychody[i]));
	}
	najwieksze.resize(dni);
	najwieksze[dni-1] = przychody[dni-1];
	for (int i=dni-2; 0<=i; --i) {
		najwieksze[i] = std::max(najwieksze[i+1], przychody[i]);
	}

	if (przedzialow == 2) {
		for (int i=0; i<dni-1; ++i) {
			if (najwieksze[i+1] <= najmniejsze[i]) {
				puts("TAK");
				fprintf(stdout, "%d\n", i+1);
				return 0;
			}
		}
		puts("NIE");
		return 0;
	}

	if (przedzialow == 3) {
		for (int i=1; i<dni-1; ++i) {
			if (przychody[i] <= najmniejsze[i-1]) {
				puts("TAK");
				fprintf(stdout, "%d %d\n", i-1+1, i+1);
				//fprintf(stderr, "↓i=%d i=%d", najmniejsze[i-1], przychody[i]);
				return 0;
			}
			if (najwieksze[i+1] <= przychody[i]) {
				puts("TAK");
				fprintf(stdout, "%d %d\n", i-1+1, i+1);
				//fprintf(stderr, "i=%d ↑i=%d", przychody[i], najwieksze[i+1]);
				return 0;
			}
		}
		puts("NIE");
		return 0;
	}

	return 0;
}