44 分!
求助!
思路:设 t 为当前时间自然晾干的值,将小于 t 的删掉,然后把剩下最大的减 b。
code:
#include<bits/stdc++.h>
using namespace std;
int n,a,b,p[500001];
int ans;
int t;
//int find(int l,int r,int a){
// while(l<=r){
// int mid=l+(r-l)/2;
// if(p[mid]==a)return mid;
// else if(p[mid]>a)r=mid-1;
// else if(p[mid]<a)l=mid;
// }
// return l;
//}
main(){
scanf("%d%d%d",&n,&a,&b);
// int l=1;
for(int i=1;i<=n;i++)scanf("%d",&p[i]);
sort(p+1,p+n+1);
int s=0;
for(int i=n;i>=1;i--) {
while(p[i]>s*a) {
ans=p[i];
ans-=b;
// p[i-1]=ans;
s++;
}
// n--;
/// cout<<s<<" ";
}
// while(l<n){
// s++;
// for(int i=l;i<=n;i++){
// if(i==n)
// p[i]-=b;
// p[i]-=a;
// if(p[i]<=0)l++;
// }
// sort(p+l,p+n+1);
// }
printf("%d",s-1);
return 0;
}