有n個怪獸以及他們的血量,A和B兩個人要殺死所有怪獸,他們的攻擊力分別爲a和b。對於每一個怪獸,A,B輪流攻擊,A總是先手,如果在A攻擊的過程中怪獸死亡,A得1分;在B攻擊的過程中怪獸死亡,A不得分。A可以跳過B攻擊的回合k次,就是這k次B不對怪獸進行攻擊,問A最多能得多少分。
先對取模,這些血量讓A,B輪流攻擊,只有最後一回合才影響得分。
用表示對於第i個怪獸,需要跳過多少B的回合A才能殺死他得分,。
把從小到大排序,依次讓直到即可。
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <vector>
#include <queue>
#include <map>
#include <cmath>
#include <set>
#define ms(a,b) memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
typedef double ab;
const int N=1e6+10;
// int h[N];
vector<int>res;
int main()
{
int n,a,b,k,ans=0;
cin>>n>>a>>b>>k;
for(int i=0,h;i<n;i++)
{
cin>>h;
h%=(a+b);
if(h==0) h=a+b;
res.push_back(ceil((double)h/a)-1);
}
sort(res.begin(),res.end());
for(int i=0;i<res.size();i++)
{
if(res[i]<=k)
{
++ans;
k-=res[i];
}
}
cout<<ans<<endl;
//system("pause");
}