Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
34046 李羽乔 【S】T1 C++ 运行超时 90 1000 MS 6140 KB 2050 2024-11-03 13:53:29

Tests(9/10):


#include<bits/stdc++.h> using namespace std; const int N = 5e5+10; #define ll long long int T,n,k,ans,q[N],l=1,r,q2[N],l2=1,r2,vis[N]; ll a[N]; bool check(int x,int y){ l=1; r=0; l2=1; r2=0; priority_queue<pair<int,int> > pq; ll minn=1e18; int cnt=0; for(int i=1;i<=n;i++){ vis[i]=0; } for(int i=1;i<=n;i++){ while(l<=r&&q[l]<(i-x+1)){ l++; } while(l<=r&&a[q[r]]<a[i]){ r--; } q[++r]=i; while(l2<=r2&&q2[l2]<(i-x+1)){ l2++; } while(l2<=r2&&a[q2[r2]]>a[i]){ r2--; } q2[++r2]=i; if(i>=x){ if((a[q[l]]-a[q2[l2]])>=y&&vis[i-x+1]==0){ cnt++; vis[i-x+1]=1; } } } if(cnt>=k) return true; else return false; } int main(){ //freopen("choose.in","r",stdin); //freopen("choose.out","w",stdout); ios::sync_with_stdio(false); cin>>T; while(T--){ ans=0; l=1; r=0; l2=1; r2=0; cin>>n>>k; for(int i=1;i<=n;i++){ cin>>a[i]; } ll X=1e18; for(int i=1;i<=n;i++){ while(l<=r&&q[l]<(i-(n-k+1)+1)){ l++; } while(l<=r&&a[q[r]]<a[i]){ r--; } q[++r]=i; while(l2<=r2&&q2[l2]<(i-(n-k+1)+1)){ l2++; } while(l2<=r2&&a[q2[r2]]>a[i]){ r2--; } q2[++r2]=i; if(i>=(n-k+1)){ X=min(X,a[q[l]]-a[q2[l2]]); } } cout<<X<<" "; int L=1,R=n-k+1; while(L<=R){ int mid=(L+R)/2; if(check(mid,X)){ R=mid-1; ans=mid; } else L=mid+1; } cout<<ans<<endl; } return 0; }


测评信息: