求助,最后四个点WA
查看原帖
求助,最后四个点WA
706737
sundyLIUXY楼主2022/8/4 15:09
#include <bits/stdc++.h>
using namespace std;

int n, m, cnt[2010], sum, ansh, anst = 100000000;
int hh = 0, tt = -1, que[1000010];

int main()
{
	scanf("%d%d", &n, &m);
	for(int i = 0; i < n; i++)
	{
		int a;
		scanf("%d", &a);
		if(!cnt[a])
		{
			sum++;
			cnt[a]++;
			que[++tt] = a;
			//printf(" -!%d %d!- ", tt-hh+1, anst-ansh+1);
			if(sum == m && tt-hh+1 < anst-ansh+1)
			{
				anst = tt, ansh = hh;
				sum--;
				cnt[que[hh]]--;
				hh++;
			}
		}
		else if(sum < m)
		{
			cnt[a]++;
			que[++tt] = a;
		}
		while(cnt[que[hh]] > 1)
		{
			cnt[que[hh]]--;
			hh++;
		}
		//printf("%d %d %d %d %d %d\n", hh+1, tt+1, que[hh], que[tt], cnt[que[hh]], sum);
	}
	printf("%d %d", ansh+1, anst+1);
	
	return 0;
}

实在想不明白了......

2022/8/4 15:09
加载中...