AT_abc304_d 求条
查看原帖
AT_abc304_d 求条
964645
pies_0x楼主2024/8/29 18:48

rt

record

Code

#include<cstdio>
#include<unordered_map>
#include<algorithm>
using namespace std;

#define N 2000050
#define X 2000050
#define Y 2000050
#define int long long

int n;
int w,h;
struct node
{
	int x,y;
	node(){}
	node(int x):x(x){}
	friend bool operator<(const node &a,const node &b){return a.x<b.x;}
}nods[N];
int cut_x_tot,cut_y_tot,cut_x[X],cut_y[Y];
unordered_map<int,unordered_map<int,int> > tot;
unordered_map<int,unordered_map<int,bool> > vis;

inline int read()
{
	int x=0;char c=getchar();
	while(c<'0'||c>'9')c=getchar();
	while(c>='0'&&c<='9')x=c-'0'+(x<<1)+(x<<3),c=getchar();
	return x;
}

signed main()
{
	w=read(),h=read(),n=read();
	
	for(int i=1;i<=n;++i)
		nods[i].x=read(),nods[i].y=read();
	
	cut_x_tot=read();
	for(int i=1;i<=cut_x_tot;++i)
		cut_x[i]=read();
	cut_x[++cut_x_tot]=w;
	sort(cut_x+1,cut_x+cut_x_tot+1);
	
	cut_y_tot=read();
	for(int i=1;i<=cut_y_tot;++i)
		cut_y[i]=read();
	cut_y[++cut_y_tot]=h;
	sort(cut_y+1,cut_y+cut_y_tot+1);
	
	int xt=0;
	for(int i=1;i<=cut_x_tot;++i)
		xt+=cut_x[i]-cut_x[i-1]-1>0;
	
	int yt=0;
	for(int i=1;i<=cut_y_tot;++i)
		yt+=cut_y[i]-cut_y[i-1]-1>0;
	
	int ans_max=0,ans_min=2e9;
	int temp=0;
	for(int i=1;i<=n;++i)
	{
		int xxt=upper_bound(cut_x+1,cut_x+cut_x_tot+1,nods[i].x)-cut_x;
		int yyt=upper_bound(cut_y+1,cut_y+cut_y_tot+1,nods[i].y)-cut_y;
		temp+=1-vis[xxt][yyt];
		vis[xxt][yyt]=1;
		ans_max=max(ans_max,++tot[xxt][yyt]);
		ans_min=min(ans_min,tot[xxt][yyt]);
	}
	// printf("0 %lld",ans_max);
	printf("%lld %lld",(temp>=xt*yt?ans_min:0),ans_max);
	return 0;
}
2024/8/29 18:48
加载中...