1 条题解
-
0大金狮 (mengqingyu) LV 10 @ 2024-7-29 9:53:02
误抄
#include<bits/stdc++.h> using namespace std; #define int long long int k,n,z[3000001],q[3000001],q1[3000001],minn[3000001],t,h=1; bool check(int m){ for(int i=1;i<=300000;i++)q[i]=1,q1[i]=0; for(int i=1;i<=n;i++){ while(t>=h&&z[i]<z[q[t]]){ t--; } q[++t]=i; if(q[t]-q[h]+1>m){ h++; } if(i>=m)minn[i]=z[q[h]]; }h=1; t=0; for(int i=1;i<=n;i++){ while(t>=h&&z[i]>z[q1[t]]){ t--; } q1[++t]=i; if(q1[t]-q1[h]+1>m){ h++; } if(i>=m){ if(z[q1[h]]-minn[i]<=k)return true; } }return false; } signed main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>k>>n; for(int i=1;i<=n;i++){ cin>>z[i]; }int l=1,r=n+1; while(l+1<r){ int mid=(l+r)/2; if(check(mid))l=mid; else r=mid; }cout<<l; return 0; }
- 1
信息
- ID
- 3149
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 310
- 已通过
- 10
- 上传者