听灌佬多
  • 板块灌水区
  • 楼主_is_laofang_
  • 当前回复7
  • 已保存回复7
  • 发布时间2024/11/18 21:05
  • 上次更新2024/11/18 23:15:23
查看原帖
听灌佬多
1059639
_is_laofang_楼主2024/11/18 21:05

CF616D WA on test 5求调,谢谢,码丑勿喷(用small panda cpp一键改码风改出来的)

#include<bits/stdc++.h>
using namespace std;
int a[1000005], n, k, tong[1000005];
int main() {
	cin >> n >> k;
	
	for ( int i = 1; i <= n; i++ ) {
		cin >> a[i];
	}
	
	int r = 0, cnt = 0, ln = 0;
	pair<int, int>ans;
	
	for ( int l = 1; l <= n; l++ ) {
		if ( l - 1 > 0 ) {
			tong[a[l - 1]]--;
			
			if ( tong[a[l - 1]] == 0 ) cnt--;
		}
		
		for ( ; r + 1 <= n && cnt <= k; ) {
			r++;
			tong[a[r]]++;
			
			if ( tong[a[r]] == 1 ) cnt++;
		}
		
		if ( cnt > k ) {
			tong[a[r]]--;
			r--;
			cnt--;
		}
		
		if ( cnt >= k ) {
			if ( r - l + 1 > ln ) {
				ln = r - l + 1;
				ans.first = l;
				ans.second = r;
			}
		}
	}
	
	cout << ans.first << ' ' << ans.second;
	return 0;
}
2024/11/18 21:05
加载中...