#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
#include <map>
using namespace std;
const int maxx = 5e5+7;
int tab[maxx];
int n,k;
void solve()
{
int maxi = -1;
bool flaga = 0;
int x,y;
for(int i=0; n>i; i++)
{
if(tab[i]<=maxi)
{
flaga = 1;
y = i+1;
break;
}
else
{
maxi = tab[i];
x = i+1;
}
}
if(flaga)
{
cout<<"TAK"<<endl;
set<int>secik;
secik.insert(x);
secik.insert(y);
int pom = 1;
while(secik.size()!=k-1)
{
secik.insert(pom);
pom++;
}
if(y == n) secik.insert(pom);
auto it = secik.begin();
for(; it != secik.end(); it++)
{
if(*it != n)
{
cout<<*it<<" ";
}
}
}
else cout<<"NIE";
}
void solve2()
{
multiset<int>secik; secik.clear();
for(int i=0; n>i; i++) secik.insert(tab[i]);
int maxi = int(1e9)+7;
for(int i=0; n-1>i; i++)
{
maxi = min(maxi, tab[i]);
secik.erase(secik.find(tab[i]));
auto it = secik.end(); it--;
if(maxi >= *it)
{
cout<<"TAK"<<endl;
cout<<i+1;
return;
}
}
cout<<"NIE";
}
void solve3()
{
int mini = tab[0];
for(int i=1; n>i; i++)
{
if(tab[i]<=mini)
{
cout<<"TAK"<<endl;
if(i == n-1)
{
cout<<"1 "<<i<<endl;
return;
}
else
{
cout<<i<<" "<<i+1<<endl;
return;
}
return;
}
mini = min(mini,tab[i]);
}
cout<<"NIE";
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>k;
for(int i=0; n>i; i++)
{
cin>>tab[i];
}
if(k>3) solve();
else if(k == 2) solve2();
else solve3();
}
/*
6 3
3 5 4 8 3 7
*/
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 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 | #include <iostream> #include <vector> #include <algorithm> #include <set> #include <map> using namespace std; const int maxx = 5e5+7; int tab[maxx]; int n,k; void solve() { int maxi = -1; bool flaga = 0; int x,y; for(int i=0; n>i; i++) { if(tab[i]<=maxi) { flaga = 1; y = i+1; break; } else { maxi = tab[i]; x = i+1; } } if(flaga) { cout<<"TAK"<<endl; set<int>secik; secik.insert(x); secik.insert(y); int pom = 1; while(secik.size()!=k-1) { secik.insert(pom); pom++; } if(y == n) secik.insert(pom); auto it = secik.begin(); for(; it != secik.end(); it++) { if(*it != n) { cout<<*it<<" "; } } } else cout<<"NIE"; } void solve2() { multiset<int>secik; secik.clear(); for(int i=0; n>i; i++) secik.insert(tab[i]); int maxi = int(1e9)+7; for(int i=0; n-1>i; i++) { maxi = min(maxi, tab[i]); secik.erase(secik.find(tab[i])); auto it = secik.end(); it--; if(maxi >= *it) { cout<<"TAK"<<endl; cout<<i+1; return; } } cout<<"NIE"; } void solve3() { int mini = tab[0]; for(int i=1; n>i; i++) { if(tab[i]<=mini) { cout<<"TAK"<<endl; if(i == n-1) { cout<<"1 "<<i<<endl; return; } else { cout<<i<<" "<<i+1<<endl; return; } return; } mini = min(mini,tab[i]); } cout<<"NIE"; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>k; for(int i=0; n>i; i++) { cin>>tab[i]; } if(k>3) solve(); else if(k == 2) solve2(); else solve3(); } /* 6 3 3 5 4 8 3 7 */ |
English