Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
34111 | daimo | 【S】T1 | C++ | 解答错误 | 0 | 766 MS | 70428 KB | 999 | 2024-11-03 15:04:41 |
#include<bits/stdc++.h> using namespace std; int n,k; int st[30][500010][2]; inline int query(int i,int j){ int lg=__lg(j); return max(st[lg][i][0],st[lg][i+j-(1<<lg)][0])-min(st[lg][i][1],st[lg][i+j-(1<<lg)][1]); } inline bool check2(int len,int x){ int sum=0; for(int i=1;i<=n-len+1;i++){if(query(i,len)>=x)sum++;} return sum>=k; } inline int calc(int len){ int sum=0; int res=2147483647; for(int i=1;i<=n-len+1;i++){res=min(res,query(i,len));} return res; } signed main(){ ios::sync_with_stdio(0); int _; cin>>_; while(_--){ cin>>n>>k; for(int i=1;i<=n;i++){ cin>>st[0][i][0]; st[0][i][1]=st[0][i][0]; } int L=__lg(n); for(int i=1;i<=L;i++){ for(int j=1;j+(1<<i)-1<=n;j++){ st[i][j][0]=max(st[i-1][j][0],st[i-1][j+(1<<(i-1))][0]); st[i][j][1]=min(st[i-1][j][1],st[i-1][j+(1<<(i-1))][1]); //cout<<j<<' '<<i<<' '<<st[j][i][0]<<' '<<st[j][i][1]<<endl; } } int l=1,r=n-k+1,ans=calc(n-k+1),mn; } return 0; }