社区讨论
80pts,求调
P9937[USACO21OPEN] Acowdemia I B参与者 3已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @mmadl0kg
- 此快照首次捕获于
- 2026/03/03 16:58 上周
- 此快照最后确认于
- 2026/03/06 18:55 4 天前
CPP
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e5+5;
int n,l;
int c[N];
int ans=1;
bool check(int x){
int sum1=0;
int sum2=0;
for(int i=1;i<=n;i++){
if(c[i]==x-1){
sum2++;
}
else if(c[i]>=x){
sum1++;
}
}
if(min(l,sum2)<x-sum1){
return 0;
}
return 1;
}
int main(){
cin>>n>>l;
for(int i=1;i<=n;i++){
cin>>c[i];
}
// cout<<check(3);
int l=0,r=n;
while(l<r){
int mid=l+(r-l)/2;
// cout<<l<<" "<<r<<" "<<mid<<"\n";
if(mid==l){
break;
}
if(check(mid)){
l=mid;
ans=max(ans,mid);
}
else{
r=mid-1;
}
}
cout<<ans;
return 0;
}
回复
共 5 条回复,欢迎继续交流。
正在加载回复...