比赛 ZLXSCDay2 评测结果 WAWWWWWWWW
题目名称 疯狂动物城 最终得分 10
用户昵称 Fancy 运行时间 0.450 s
代码语言 C++ 内存使用 2.69 MiB
提交时间 2016-04-10 18:15:42
显示代码纯文本
#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const int N=100001;
const double pi=3.14159265358979323846;
int n,pos[N];
double ans,f,v[N],mx[N];
pair<int,int> a[N];
inline void Change(int x,double y)
{
	for(;x<=n;x+=x&(-x)) mx[x]=max(mx[x],y);
}
inline double Quary(int x)
{
	double maxx=0;
	for(;x;x-=x&(-x)) maxx=max(maxx,mx[x]);
	return maxx;
}
int main()
{
	freopen("zootopia.in","r",stdin);
	freopen("zootopia.out","w",stdout);
	scanf("%d",&n);
	for(int i=n,x,y;i;i--)
	{
		scanf("%d%d",&x,&y);
		a[i]=make_pair(x,i);
		v[i]=pi*x*x*y;
	} 
	sort(a+1,a+n+1);
	pos[a[1].second]=1;
	for(int i=2;i<=n;i++)
	  pos[a[i].second]=pos[a[i-1].second]+(a[i].first!=a[i-1].first);
	for(int i=1;i<=n;i++)
	{
		f=Quary(pos[i])+v[i];
		Change(pos[i],f);
		ans=max(ans,f);
	}
	printf("%.2lf\n",ans);
}