Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
34111 daimo 【S】T1 C++ 解答错误 0 766 MS 70428 KB 999 2024-11-03 15:04:41

Tests(0/10):


#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; }


测评信息: