0分求调
查看原帖
0分求调
799944
fengzilang楼主2024/8/20 13:20
#include<bits/stdc++.h>
using namespace std;
int a,b,g=50000,i,s,j,xx;
double x,y,w,v;
char p[100];
struct c {
	double ly,ry,my;
} t[200001];
double ans(double x,double i,double j) {
	return x*i+j;
}
void dfs(int id,int x,int y,double i,double j) {
	int m=(x+y)/2;
	double mid=ans(m-1,i,j),l=t[id].ly,r=t[id].ry,L=ans(x-1,i,j),R=ans(y-1,i,j);
	if(mid>t[id].my)t[id].my=mid,t[id].ly=L,t[id].ry=R;
	if(x!=y) {
		if(l<L)dfs(id*2,x,m,i,j);
		if(r<R)dfs(id*2+1,m+1,y,i,j);
	}
}
void bfs(int x,int y,int w,int z) {
	int m=(y+w)/2;
	if(m==z)s=t[x].my;
	else if(y!=w) {
		if(m>z)bfs(x*2,y,m,z);
		else bfs(x*2+1,m+1,w,z);
	}
}
int main() {
	cin>>a;
	for(i=1; i<=a; i++) {
		scanf("%s",p+1);
		if(p[1]=='P')scanf("%lf%lf",&x,&y),dfs(1,1,g,y,x);
		else scanf("%d",&xx),bfs(1,1,g,xx),printf("%d\n",s/100);
	}
}
2024/8/20 13:20
加载中...