求助大佬 自己设的数据及样例都无问题 但只对两个点
#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);
}