记录编号 270063 评测结果 AAAAAAAAAA
题目名称 [NOIP 2012]国王游戏 最终得分 100
用户昵称 GravatarFoolMike 是否通过 通过
代码语言 C++ 运行时间 0.260 s
提交时间 2016-06-14 13:23:03 内存使用 0.35 MiB
显示代码纯文本
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;

struct person{
	int a,b;
	bool operator < (const person x)const{return a*b<x.a*x.b;}
}p[1010];
int n,i,j;

const int bit=5000;
struct big{
	int a[5010];
	void Mod(){
		for (int i=1;i<=bit;i++) a[i+1]+=a[i]/10,a[i]%=10;
	}
	void mul(int x){
		for (int i=1;i<=bit;i++) a[i]*=x;
		Mod();
	}
	void div(int *A,int x){
		for (int i=bit,ji=0;i>0;i--)
			ji=ji*10+a[i],A[i]=ji/x,ji%=x;
	}
	bool operator > (const big *x)const{
		int i=bit;
		while (x->a[i]==a[i]&&i>1) i--;
		return a[i] > x->a[i];
	}
	void print(){
		int i=bit;
		while (!a[i]&&i>1) i--;
		for (;i;i--) printf("%d",a[i]);
		printf("\n");
	}
}ans,now,work;

int main()
{
	freopen("kinggame.in","r",stdin);
	freopen("kinggame.out","w",stdout);
	scanf("%d",&n);
	scanf("%d%*d",&work.a[1]);
	work.Mod();
	for (i=1;i<=n;i++) scanf("%d%d",&p[i].a,&p[i].b);
	sort(p+1,p+n+1);
	for (i=1;i<=n;i++){
		for (j=1;j<=bit;j++) now.a[j]=0;
		work.div(now.a,p[i].b);
		if (now>&ans) ans=now;
		work.mul(p[i].a);
		//work.print();
	}
	ans.print();
	return 0;
}