求助样例等过但只有24
查看原帖
求助样例等过但只有24
97056
枫maple楼主2023/9/13 08:03

求助大佬 自己设的数据及样例都无问题 但只对两个点

#include<bits/stdc++.h>
using namespace std;
long long longg(int p)
{
	long long  s=1;
	for(int i=1;i<=p;i++)
	s*=2;
	return s;
}
void oi(long long x,long long y,long long a,long long b,long long l)
{
	if(l==1)
	return;
	if((x-a+1)<=l/2&&(y-b+1)<=l/2)
	{
		cout<<a+l/2<<" "<<b+l/2<<" 1"<<endl;
		oi(x,y,a,b,l/2);
		oi(a+l/2,b+l/2-1,a,b+l/2,l/2);
		oi(a+l/2-1,b+l/2,a+l/2,b,l/2);
		oi(a+l/2,a+l/2,a+l/2,a+l/2,l/2); 
	}
	if((x-a+1)>l/2&&(y-b+1)<=l/2)
	{
		cout<<a+l/2-1<<" "<<b+l/2<<" 3"<<endl;
		oi(x,y,a+l/2,b,l/2);
		oi(a+l/2-1,b+l/2-1,a,b,l/2);
		oi(a+l/2-1,b+l/2,a,b+l/2,l/2);
		oi(a+l/2,a+l/2,a+l/2,b+l/2,l/2);
	} 
	if((x-a+1)<=l/2&&(y-b+1)>l/2)
	{
		cout<<a+l/2<<" "<<b+l/2-1<<" 2"<<endl;
		oi(a+l/2-1,b+l/2-1,a,b,l/2);
		oi(x,y,a,b+l/2,l/2);
		oi(a+l/2,b+l/2-1,a+l/2,b,l/2);
		oi(a+l/2,b+l/2,a+l/2,b+l/2,l/2); 
	}
	if((x-a+1)>l/2&&(y-b+1)>l/2)
	{
		cout<<a+l/2-1<<" "<<b+l/2-1<<" 4"<<endl;
		oi(x,y,a+l/2,b+l/2,l/2);
		oi(a+l/2-1,b+l/2-1,a,b,l/2);
		oi(a+l/2,b+l/2-1,a+l/2,b,l/2);
		oi(a+l/2-1,b+l/2,a,b+l/2,l/2);
	}
}
int main()
{
    long long k,x0,y0;
	cin>>k;
	cin>>x0>>y0;
	long long s=longg(k);
	oi(x0,y0,1,1,s);
}
2023/9/13 08:03
加载中...