代码:
#include <iostream>
#include <algorithm>
using namespace std;
const int kMaxN = 1e5 + 1;
int n, k, a[kMaxN], rk[kMaxN];
int lis[kMaxN], len;
int main() {
cin >> n >> k;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
for (int i = 1; i <= n; i++) {
rk[a[i]] = i;
}
for (int i = 1; i <= n; i++) {
int pos = lower_bound(lis + 1, lis + len + 1, rk[i]) - lis;
lis[pos] = rk[i];
len = max(len, pos);
if (len == k) {
cout << k << '\n';
for (int i = 1; i <= k; i++) {
cout << lis[i] << ' ';
}
return 0;
}
}
cout << -1;
return 0;
}
记录