#include #include #include #include #include #include #include #include #include #define this (*this) #define null nullptr #define EVAL namespace alex { template inline T* malloc(int count) { void* rt=std::malloc(sizeof(T)*count); return (T*)rt; } template using ptr=T*; template using ref=T&; template using cref=const T&; template using cptr=const T*; using uint64=uint_fast64_t; using uint32=uint_fast32_t; using int64=int_fast64_t; using int32=int_fast32_t; using mdouble=long double; template using list=std::vector; template using deque=std::deque; #ifndef EVAL auto& cin=std::cin; auto& cout=std::cout; #else std::ifstream cin; std::ofstream cout; #endif char init() { cin.open("queens.in"); cout.open("queens.out"); return '\n'; } const char endl=init(); } namespace queens { using namespace alex; struct point { int x, y; inline point(){} inline point(int x, int y){this.x=x;this.y=y;} }; int N, R, K; ptr> Table; int newFights(cref>> used, cref pt) { int rt=0; for(int i=1;i<=R;i++) { if(pt.x-i>=0) { if(used[pt.x-i][pt.y])rt++; if(pt.y-i>=0) { if(used[pt.x-i][pt.y-i])rt++; } if(pt.y+i=0) { if(used[pt.x+i][pt.y-i])rt++; } if(pt.y+i=0) { if(used[pt.x][pt.y-i])rt++; } if(pt.y+i a, cref b) { return Table[a.x][a.y]>Table[b.x][b.y]; } list solve() { list points; for(int i=0;i rt; list> used(N, list(N, false)); int fights=0; for(crefpt : points) { int nf=newFights(used, pt); if(fights+nf<=K) { fights+=nf; used[pt.x][pt.y]=true; rt.push_back(pt); } } return rt; } } } void read() { using namespace queens; using namespace alex; std::ios::sync_with_stdio(false); cin.tie(null); cout.tie(null); cin>>N>>R>>K; Table=(int**)malloc(N); for(register int i=0, j;i(N); for(j=0;j>Table[i][j]; } } int main() { using namespace queens; using namespace alex; read(); list sol1=greedy::solve(); for(auto p : sol1)cout<