求助40分
查看原帖
求助40分
681755
CuteGirlGC楼主2023/12/18 22:00

代码:

#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;
}

记录

2023/12/18 22:00
加载中...