记录编号 |
168341 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2012]国王游戏 |
最终得分 |
100 |
用户昵称 |
mikumikumi |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.056 s |
提交时间 |
2015-07-03 17:09:21 |
内存使用 |
0.49 MiB |
显示代码纯文本
#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;
}