91pts 双指针 WA on #6
  • 板块P1638 逛画展
  • 楼主monodev
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/9/23 15:35
  • 上次更新2023/11/16 15:36:27
查看原帖
91pts 双指针 WA on #6
533102
monodev楼主2023/9/23 15:35
#include <iostream>
using namespace std;

const int inf = 2147483647;
int a[1000001], contains[2001];

int main(){
	int n, m;
	cin >> n >> m;
	for(int i = 0; i < n; i ++)
		cin >> a[i];
	int l = 0, r = 0;
	int contained = 0;
	int anslen = inf, ansl, ansr;
	while(r < n){
		while(contained < m && r <= n){
			if(contains[a[r]] == 0) ++ contained;
			++ contains[a[r]];
			++ r;
		}
		while(contained >= m && l <= r){
			-- contains[a[l]];
			if(contains[a[l]] == 0) -- contained;
			++ l;
		}
		if(r - l < anslen){
			anslen = r - l;
			ansl = l;
			ansr = r;
		}
	}
	cout << ansl << ' ' << ansr << endl;
}
2023/9/23 15:35
加载中...