尺取法91pts求助(悬赏2关
查看原帖
尺取法91pts求助(悬赏2关
890185
liruixiongxh楼主2023/7/7 19:32

RT

#include <bits/stdc++.h>

using namespace std;

const int kMaxN = 1e6 + 5;
int n, m, a[kMaxN], ans = 1e9, cnt[2005], ansl = 1e9, ansr = 1e9;
int main() {
  ios::sync_with_stdio(0), cin.tie(0);
  cin >> n >> m;
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
  }
  for (int l = 1, r = 1, c = 0; r < n; r++) {
    for (; r < n && c < m; r++) {
      (++cnt[a[r]] == 1) && (c++);
    }
    r--;
    for (; c == m; l++) {
      if (ans > r - l + 1) {
        ans = r - l + 1, ansl = l, ansr = r;
      } else if (ans == r - l + 1 && ansl > l) {
        ansl = l, ansr = r;
      }
      !(--cnt[a[l]]) && (c--);
    }
  }
  cout << ansl << " " << ansr;
  return 0;
}
2023/7/7 19:32
加载中...