最后三个测试点time error
  • 板块P1638 逛画展
  • 楼主eps_8266
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/11/9 13:00
  • 上次更新2024/11/9 15:07:47
查看原帖
最后三个测试点time error
1233551
eps_8266楼主2024/11/9 13:00
#include<iostream>
#include<vector>
#include<algorithm>
#define MAXN 100010
using namespace std;

int main() {
	int n, m, ansl = 0, ansr = 0;
	cin >> n >> m;
	int a[MAXN] = { 0 }, num[1005] = { 0 };
	for (int i = 1; i <= n; i++) {
		cin >> a[i];
	}
	int len = MAXN, l=1, r=1, artist_num = 0;
	while (l <= r && r <= n + 1) {//左闭右开
		if (artist_num < m &&r<=n) {//防止越界
			r++;
			num[a[r - 1]]++;//arr[r-1]才计入
			if (num[a[r - 1]] == 1) {
				artist_num++;
			}
		}
		else {
			if (artist_num==m && len > r - l) {
				len = r - l;
				ansr = r - 1;//左闭右开
				ansl = l;
			}
			num[a[l]]--;
			if (num[a[l]] == 0) {
				artist_num--;
			}
			l++;
		}
	}
	cout << ansl << " " << ansr;
}
2024/11/9 13:00
加载中...