比赛 EYOI常规赛 1st 评测结果 AAAAAAAAAA
题目名称 奶牛晒衣服 最终得分 100
用户昵称 遥时_彼方 运行时间 0.648 s
代码语言 C++ 内存使用 14.88 MiB
提交时间 2021-12-02 19:44:31
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
using namespace std;
char ra;
int read(int x)
{
	ra=getchar();
	while(ra<'0'||ra>'9') ra=getchar();
	while(ra>='0'&&ra<='9') 
	{
		x=(x<<3)+(x<<1)+(ra^48);
		ra=getchar();
	}
	return x;
} 
int write(int x)
{
	if(x/10) write(x/10);
	putchar(x%10+48);
}
///////////
int nc;
int n[5000010];
int mx;
int m1;
int m2;
int ans;
bool cmp(int x,int y){return x>y;}
void EF(int l,int r)
{
	if(l>r) return;
	int md=(l+r)>>1;
	int now=md*m1;
	int p=0;
	int sum=0;
	for(int i=1;n[i]>now;i++)
	{
		sum+=(n[i]-now)/m2;
		if((n[i]-now)%m2) sum++;
		if(sum>md) break;
	}
	if(l==r)
	{
		if(sum<=md) ans=min(ans,md);
		return;
	}
	if(sum<=md) 
	{
		ans=min(ans,md);
		EF(l,md);
	}
	else EF(md+1,r);
	return;
}
int main()
{
	freopen("dry.in","r",stdin);
	freopen("dry.out","w",stdout);
	nc=read(0);
	m1=read(0);
	m2=read(0);
	for(int i=1;i<=nc;i++) n[i]=read(0);
	sort(n+1,n+nc+1,cmp);
	mx=n[1]/m1;
	if(n[1]%m1) mx++;
	ans=mx;
	EF(1,mx);
	write(ans);
	putchar(10);
	return 0;
}