K题 求助
根据题解意思写的,还是wa了,是哪里有问题吗?
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int a[500500];
int pre[500500];
map<int,int> mp;
int main()
{
int t;
cin>>t;
while(t--)
{
int n,k;
mp.clear();
memset(a,0,sizeof(a));
memset(pre,0,sizeof(pre));
scanf("%d%d",&n,&k);
int ml=0,mr=k;
int lm=k,rm=0;
int f=1;
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
if(mp.find(a[i])!=mp.end())
{
pre[i]=mp[a[i]];
}
mp[a[i]]=i;
}
for(int i=1;i<=n;i++)
{
if(a[i]>k)
{
cout<<"NO"<<endl;
f=0;
break;
}
if(pre[i])
{
if(pre[i]>i-k)
{
if((pre[i]%k)<(i%k))
{
ml=max(ml,pre[i]%k);
mr=min(mr,i%k);
}
else
{
lm=min(lm,i%k);
rm=max(rm,pre[i]%k);
}
}
}
}
if(f)
{
if(ml<mr&&(ml<lm||mr>rm))
printf("YES\n");
else
printf("NO\n");
}
}
}
/*
8 3
2 3 2 1 3 3 2 1
10 3
1 1 2 3 3 2 1 2 3 1
10 3
1 2 1 2 3 3 2 3 1 1
*/


海康威视公司氛围 1020人发布