45分求助
查看原帖
45分求助
1100435
yuanwanzhao楼主2024/12/1 11:17

bro认为自己的代码没有问题

活死不知道哪里错了,调试一点问题没有,结果测试点4的r1总是多1

#include <bits/stdc++.h>
#define tin int
#define itn int
#define tni int
#define nit int
#define nti int
#define f(j,n) for(int i=j;i<=n;i++)
#define f2(k,n) for(int j=k;j<=n;j++)
#define MAXN 1e8
using namespace std;
typedef long long ll;
int a[1000005];
int ans[2005],o,r=0,l=1;
int main(){
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++)cin>>a[i];
	for(int i=1;i<=n;i++){
		if(ans[a[i]]==0)o++;
		ans[a[i]]++;
		r++;
		if(o==m)break;
	}
	//cout<<o<<" ";
	int i1=r;
	while(ans[a[l]]>1)ans[a[l++]]--;
	int l1=l,r1=r;
	//cout<<l<<" "<<r<<endl;
	for(int i=i1;i<=n;){
		ans[a[i]]++;
		r++;
		i++;
		while(ans[a[l]]>1)ans[a[l++]]--;
		if(r1-l1>r-l){
			//cout<<l1<<" "<<r1<<"\n";
			r1=r;
			l1=l;
		}
	}
	cout<<l1<<" "<<r1;

/*
12 5
2 5 3 1 3 2 4 1 1 5 4 3
*/
}
2024/12/1 11:17
加载中...