竞赛讨论区 > L题这样写为什么不对啊,永远是通过33.3%,但是我感觉没有什么问题啊
头像
李昶昊
发布于 02-08 02:44 河南
+ 关注

L题这样写为什么不对啊,永远是通过33.3%,但是我感觉没有什么问题啊

#include <bits/stdc++.h>
using namespace std;
#define PII pair<int,int>
#define PIID pair<double,double>
//#define int __int128
#define int long long
#define re register
#define rep(ii,aa,bb) for(re int ii = aa; ii <= bb; ii++)
#define Rep(ii,aa,bb) for(re int ii = aa; ii >= bb; ii--)
#define fi first
#define se second
#define inf 0x3f3f3f3f3f3f3f3f
#define ull unsigned long long
#define endl '\n'
#define debug(x) cout<<"#x= "<<x<<endl;
const int N=2e5+5;
const int M=3e5+5;
const int mod=1e9+7;
int _;
int n,m,k;
int a[N],b[N],pre[N],sub[N];
int idx[N];
map<int,int>mp;
map<int,PII>v;
int cnt;
void solve(){
	cin>>n>>k;
	rep(i,1,n){
		cin>>a[i];
		idx[a[i]]=i;
	}
	if(k==1){
		cout<<"0"<<endl;
		return;
	}
	rep(i,1,n){
		if(!idx[a[i]])continue;
		if(mp[a[i]-idx[a[i]]]==0){
			v[a[i]-idx[a[i]]]={idx[a[i]],idx[a[i]]};
		}
		else if(mp[a[i]-idx[a[i]]]<k){
			int cur=v[a[i]-idx[a[i]]].fi;
			v[a[i]-idx[a[i]]]={cur,idx[a[i]]};
		}
		mp[a[i]-idx[a[i]]]++;
	}
	bool is=true;
//	cout<<endl;
	for(auto t:mp){
//		cout<<"mp["<<t.fi<<"]="<<t.se<<endl;
		if(t.se>=k){
			is=false;
			break;
		}
	}
//	cout<<endl;
	int ans=inf;
	for(auto t:v){
		int id=t.fi;
//		cout<<"v["<<id<<"]={"<<v[id].fi<<","<<v[id].se<<"}"<<endl;
		if(mp[id]>=k){
			ans=min(ans,v[id].se-v[id].fi);
		}
	}
	cout<<ans<<endl;
}
signed main(){
	ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    _=1;
	//cin>>_;
	while(_--){
		solve();
	}
    return 0;
}

全部评论

(1) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐