#include #include #include #include #include #include #include #include using namespace std; typedef long long ll; ll n,k,r,m[1024][1024],dp[1024][1024],br[256],used[1024][1024],ans1,ok; bool used1[11024][1024]; vector < pair > > v; queue ans; void null_br(void) { for(ll i=1; i<=50; i++) br[i]=0; return ; } ll diag1(ll a, ll b) { ll sum=0; ll brans=0,ans=0; for(ll i=a-r, j=b-r; i<=a+r, j<=b+r; i++, j++) if(i>=1&&i<=n&&j>=1&&j<=n) { br[m[i][j]]++; sum+=m[i][j]; } return sum; } ll diag2(ll a, ll b) { ll sum=0; for(ll i=a-r, j=b+r; i<=a+r, j>=b-r; i++, j--) if(i>=1&&i<=n&&j>=1&&j<=n) { br[m[i][j]]++; sum+=m[i][j]; } return sum; } ll line(ll a, ll b) { ll sum=0; for(ll i=b-r; i<=b+r; i++) if(i>=1&&i<=n) { br[m[a][i]]++; sum+=m[a][i]; } return sum; } ll row(ll a, ll b) { ll sum=0; for(ll i=a-r; i<=a+r; i++) if(i>=1&&i<=n) { br[m[i][b]]++; sum+=m[i][b]; } return sum; } void sum(ll x, ll y) { ll brans=0,ans=0; dp[x][y]=diag1(x,y)+diag2(x,y)+row(x,y)+line(x,y); for(ll i=1; i<=50; i++) if(br[i]>=brans) { brans=br[i]; ans=i; } dp[x][y]*=ans; null_br(); return ; } bool mark(ll a,ll b) { for(ll i=a-r, j=b-r; i<=a+r, j<=b+r; i++, j++) { if(i>0&&j>0) { used[i][j]++; if(used[i][j]==k)ok=1; } } for(ll i=a-r, j=b+r; i<=a+r, j>=b-r; i++, j--) { if(i>0&&j>0&&i!=a&&j!=b) { used[i][j]++; if(used[i][j]==k)ok=1; } } for(ll i=b-r; i<=b+r; i++) { if(i>0&&i!=b) { used[a][i]++; if(used[a][i]==k)ok=1; } } for(ll i=a-r; i<=a+r; i++) { if(i>0&&i!=a) { used[i][b]++; if(used[i][b]==k)ok=1; } } if(ok==1)return 1; return 0; } void print(queue q) { for(; !q.empty();) { cout<>n>>r>>k; for(ll i=1; i<=n; i++) for(ll j=1; j<=n; j++) scanf("%lld",&m[i][j]); for(ll i=1; i<=n; i++) for(ll j=1; j<=n; j++) sum(i,j); for(ll i=1; i<=n; i++) for(ll j=1; j<=n; j++) v.push_back(make_pair(dp[i][j], make_pair(i, j))); sort(v.begin(),v.end()); for(ll i=n*n-1; i>=0; i--) { ll x,y; x=v[i].second.first; y=v[i].second.second; if(mark(x,y))break; used1[x][y]=1; ans.push(x); ans.push(y); } for(ll i=1; i<=n; i++) for(ll j=1; j<=n; j++) if(used[i][j]==0) { ans.push(i); ans.push(j); } print(ans); return 0; } /* 6 3 6 2 4 7 5 2 5 7 7 3 1 2 2 2 4 2 4 4 7 4 5 8 5 7 2 5 7 6 5 7 8 8 7 4 3 6 1 */