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 */