记录编号 401678 评测结果 AAAAAAAAAA
题目名称 疯狂动物城 最终得分 100
用户昵称 GravatarzChengYuan 是否通过 通过
代码语言 C++ 运行时间 0.285 s
提交时间 2017-05-03 17:15:32 内存使用 1.84 MiB
显示代码纯文本
#include <fstream>
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
//ifstream fin("zootopia.in");
//ofstream fout("zootopia.out");
const double pi=3.1415926535897932384626433832795028841971;
double V[100010];
int n;
struct cake
{
	int r,h;
	double v(){return r*r*pi*h;}
};
cake a[100010];
inline int lowbit(int x){return x&-x;}
void update(int x,double v)
{
	for(int i=x;i<=100010;i+=lowbit(i))
		V[i]=max(V[i],v);
}
double findmax(int x)
{
	double ans=0;
	for(int i=x;i>0;i-=lowbit(i))
		ans=max(ans,V[i]);
	return ans;
}
int main()
{
	freopen("zootopia.in","r",stdin);
	freopen("zootopia.out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;++i)
		cin>>a[i].r>>a[i].h;
	double ans=0;
	for(int i=n;i>0;--i)
	{
		double v=findmax(a[i].r-1)+a[i].v();
		update(a[i].r,v);
		ans=max(ans,v);
	}
	printf("%.2lf\n",ans);
}