标签:contain his typedef += title put field col script
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)
Total Submission(s): 599 Accepted Submission(s): 234
//m要用long long 啊。 //二分答案x,然后尺取。找到有多少个区间存在至少k个大于等于x的数,如果这样的区间数不少于m个就说明第m大的数 //比x大,因此有单调性。尺取区间[l,r]中有k个不小于x的数那么会有n-r+1个符合的区间。 #include<iostream> #include<cstdio> #include<cstring> using namespace std; typedef long long ll; const int MAXN=100009; int n,k,a[MAXN]; ll m; bool solve(int x) { ll sum=0; int tmp=0,l=1,r=0; while(1){ while(tmp<k){ ++r; if(r>n) break; if(a[r]>=x) tmp++; } if(r>n) break; sum+=(n-r+1); if(a[l]>=x) tmp--; l++; } if(sum>=m) return 1; return 0; } int main() { int t; scanf("%d",&t); while(t--){ scanf("%d%d%lld",&n,&k,&m); for(int i=1;i<=n;i++) scanf("%d",&a[i]); int l=1,r=1e9,ans=0; while(l<=r){ int mid=(l+r)>>1; if(solve(mid)) { ans=mid;l=mid+1; } else r=mid-1; } printf("%d\n",ans); } return 0; }
标签:contain his typedef += title put field col script
原文地址:http://www.cnblogs.com/--ZHIYUAN/p/7944584.html