棋盘覆盖问题 各位来看看哪里错了


#include<bits/stdc++.h>
const int inf=1e5+10;using namespace std;typedef long long ll;
#define endl '\n'
int k,tx,ty;
int n;
void work(int dx,int dy,int x,int y,int L)
{
    if(L<=1)return;
    L=L>>1;
    if(dx-x<L&&dy-y<L)// part one
    {
        cout<<L+x<<' '<<L+y<<' '<<1<<endl;
        work(dx,dy,x,y,L);
        work(L+x,L,L+x,y,L);
        work(L,L+y,x,L+y,L);
        work(L+x,L+y,L+x,L+y,L);
    }
    if(dx-x>=L&&dy-y<L)// part two
    {
        cout<<L<<' '<<L+y<<' '<<2<<endl;
        work(L,L,x,y,L);
        work(dx,dy,L+x,y,L);
        work(L,L+y,x,L+y,L);
        work(L+x,L+y,L+x,L+y,L);        
    }
    if(dx-x<L&&dy-y>=L)// part three
    {
        cout<<L+x<<' '<<L<<' '<<3<<endl;
        work(L,L,x,y,L);
        work(L+x,L,L+x,y,L);
        work(dx,dy,x,L+y,L);
        work(L+x,L+y,L+x,L+y,L);        
    }
    if(dx-x>=L&&dy-y>=L)// part four
    {
        cout<<L<<' '<<L<<' '<<4<<endl;
        work(L,L,x,y,L);
        work(L+x,L,L+x,y,L);
        work(L,L+y,x,L+y,L);
        work(dx,dy,L+x,L+y,L);        
    }
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin>>k>>tx>>ty;
    n=1<<k;
    work(tx,ty,1,1,n);
    return 0;
}

一道洛谷题
https://www.luogu.com.cn/problem/P1228