记录编号 |
270063 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2012]国王游戏 |
最终得分 |
100 |
用户昵称 |
FoolMike |
是否通过 |
通过 |
代码语言 |
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;
}