Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
34177 hi_hi 【S】T1 C++ 运行超时 90 1000 MS 75344 KB 1229 2024-11-03 16:31:14

Tests(9/10):


#pragma GCC optimize(2) #include<algorithm> #include<cstdio> using namespace std; int T,LLN=-0x7f7f7f7f,LLX=0x7f7f7f7f; int fxy[20][500005],f2[20][500005],a[500005],a1; int n,k; inline int fd(int l,int r){ int k=__lg(r-l+1); return max(fxy[k][l],fxy[k][r-(1<<k)+1])-min(f2[k][l],f2[k][r-(1<<k)+1]); } int ck(int l){ int sum=0; for(int i=1;i+l-1<=n;i++){ if(fd(i,i+l-1)>=a1)sum++; if(sum>=k)return 1; } return 0; } int main(){ scanf("%d",&T); while(T--){ scanf("%d%d",&n,&k); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); fxy[0][i]=f2[0][i]=a[i]; } for(int j=1;j<=__lg(n);j++){ for(int i=1;i<=n-(1<<(j-1));i++){ fxy[j][i]=max(fxy[j-1][i],fxy[j-1][i+(1<<(j-1))]); f2[j][i]=min(f2[j-1][i],f2[j-1][i+(1<<(j-1))]); } } a1=LLX; for(int i=1;i<=k;i++){ a1=min(a1,fd(i,i+n-k)); } int l=1,r=n-k+1,mid; while(l<r){ mid=(l+r)/2; if(ck(mid)){ r=mid; } else l=mid+1; } printf("%d %d\n",a1,l); } }


测评信息: