比赛 2012Day1 评测结果 AAAAAAAAAA
题目名称 国王游戏 最终得分 100
用户昵称 mikumikumi 运行时间 0.053 s
代码语言 C++ 内存使用 0.49 MiB
提交时间 2015-10-22 19:45:59
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long LL;
int N,L[10010],R[10010];
LL MOD=1000000;
class miku
{
public:
	LL s;
	int id;
}w[10010];
bool cmp(miku a,miku b)
{
	return a.s<b.s;
}
class miku2
{
    public:
	int n;
	LL s[1000];
	miku2()
	{
		n=1;
		memset(s,0,sizeof(s));
	}
	void operator =(const int &a)
	{
		n=1;
		s[0]=a;
	}
	bool operator >(const miku2 &a)
	{
		if(n!=a.n) return n>a.n;
		for(int i=n;i>=0;i--)
			if(s[i]!=a.s[i]) return s[i]>a.s[i];
		return 0;
	}
	void print()
	{
		printf("%lld",s[n-1]);
		for(int i=n-2;i>=0;i--)
		{
			printf("%06lld",s[i]);
		}
	}
}ans;
inline miku2 operator * (const miku2 &a,const int &b)
{
	miku2 c;
	c.n=a.n;
	for(int i=0;i<c.n;i++)
	{
		c.s[i]+=a.s[i]*b;
		c.s[i+1]+=c.s[i]/MOD;
		c.s[i]%=MOD;
	}
	while(c.s[c.n]>0) c.n++;
	return c;
}
inline miku2 operator /(miku2 a,const int &b)
{
	for(int i=a.n-1;i>=0;i--)
	{
		if(i>0) a.s[i-1]+=(a.s[i]%b)*MOD;
		a.s[i]/=b;
	}
	while(a.n>0&&a.s[a.n-1]==0) a.n--;
	return a;
}
int main()
{
	freopen("kinggame.in","r",stdin);
	freopen("kinggame.out","w",stdout);
	scanf("%d",&N);
	for(int i=0;i<=N;i++)
	{
		scanf("%d%d",&L[i],&R[i]);
		w[i].id=i;
		w[i].s=L[i]*R[i];
	}
	sort(w+1,w+N+1,cmp);
	miku2 now,tem;
	now=L[0];ans=0;
	for(int i=1;i<=N;i++)
	{
		tem=now/R[w[i].id];
		if(tem>ans) ans=tem;
		now=now*L[w[i].id];
	}
	//printf("%d",ans);
	ans.print();
	return 0;
}