fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define ll long long
  6. #define ull unsigned ll
  7. #define ld long double
  8. typedef vector<int> vi;
  9. typedef multiset<int> mi;
  10. typedef multiset<ll> mll;
  11. typedef vector<ll> vll;
  12. typedef vector<bool> vb;
  13. typedef vector<string> vs;
  14. typedef set<ll> sll;
  15. typedef vector<vector<int>> _2vi;
  16. typedef vector<vector<ll>> _2vll;
  17. #define all(v) ((v).begin()), ((v).end())
  18. #define sz(v) ((ll)((v).size()))
  19.  
  20. #define vinp(v, n) \
  21.   for (ull i = 0; i < (n); i++) \
  22.   cin >> (v)[i]
  23. #define printv(v) \
  24.   for (auto i : (v)) \
  25.   cout << i << " "
  26. #define fr0(i, n) for (ull(i) = 0; (i) < (n); (i)++)
  27. #define fr1(i, n) for (ull(i) = 1; (i) < (n); (i)++)
  28. #define fr(i, x, n) for (ull(i) = (x); (i) < (n); (i)++)
  29. #define _CRT_SECURE_NO_WARNING
  30. const ll MOD = 1000000007;
  31.  
  32. void Bustany() {
  33. ios_base::sync_with_stdio(false);
  34. cin.tie(NULL);
  35. cout.tie(NULL);
  36. #ifndef ONLINE_JUDGE
  37. freopen("./in.txt", "r", stdin), freopen("./out.txt", "w", stdout);
  38. #endif
  39. }
  40.  
  41. const ll N = 1e3 + 5;
  42. vector<sll> adj(N);
  43.  
  44. //_2vll adj(N,vll(N));
  45.  
  46.  
  47.  
  48.  
  49. vb vis;
  50. vector<vector<vector<ll>>> pref(N, vector<vector<ll>>(N, vector<ll>(26, 0)));
  51. pair<ll, ll> ansXY;
  52. ll n, m, k;
  53.  
  54. bool can(ll mid) {
  55. for (ll i = 1; i <= n - mid + 1;i++){
  56. for(ll j=1;j<=m-mid+1;j++){
  57. ll a=i,b=j,c=a+mid-1,d=b+mid-1;
  58. ll dis=0;
  59. for(ll o=0;o<26;o++){
  60. ll freq=pref[c][d][o]-pref[a-1][d][o]-pref[c][b-1][o]+pref[a-1][b-1][o];
  61. if(freq){
  62. dis++;
  63. }
  64. }
  65. if(dis>=k){
  66. ansXY={i,j};
  67. return true;
  68. }
  69. }
  70. }
  71. return false;
  72. }
  73.  
  74.  
  75. void solve() {
  76. cin >> n >> m >> k;
  77. vector<vector<char>> v(n + 1, vector<char>(m + 1));
  78. for (ll i = 1; i <= n; i++) {
  79. for (ll j = 1; j <= m; j++) {
  80. cin >> v[i][j];
  81. }
  82. }
  83. for (ll i = 1; i <= n; i++) {
  84. for (ll j = 1; j <= m; j++) {
  85. pref[i][j][v[i][j] - 'A']++;
  86. for (ll o = 0; o <= 26; o++) {
  87. pref[i][j][o] += pref[i - 1][j][o] + pref[i][j - 1][o] - pref[i - 1][j - 1][o];
  88. }
  89. }
  90. }
  91. ll l = 1, r = min(n, m), ans = -1, mid;
  92. while (l <= r) {
  93. mid = (l + r) / 2;
  94. if (can(mid)) {
  95. ans = mid;
  96. r = mid - 1;
  97. } else {
  98. l = mid + 1;
  99. }
  100. }
  101. cout << ans << endl;
  102. if (ans != -1) {
  103. cout << ansXY.first << " " << ansXY.second;
  104. }
  105. }
  106.  
  107. int main() {
  108. Bustany();
  109. ll t = 1;
  110. // cin >> t;
  111. while (t--) {
  112. solve();
  113. }
  114. }
Success #stdin #stdout 0.21s 248256KB
stdin
Standard input is empty
stdout
-1